Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
vitalik_a
4 / 4 / 1
Регистрация: 11.09.2014
Сообщений: 81
#1

NSAttributedString - Как вставить HTML? - Objective-C

23.09.2014, 12:15. Просмотров 1476. Ответов 9
Метки нет (Все метки)

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    NSString *string = @"<p>ewrtgh</p><p>werg</p><p>werg</p>";
    NSData *textData = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *options = @{
                                NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)
                              };
    NSError *error = nil;
    NSAttributedString *textAttributedString = [[NSAttributedString alloc] initWithData:textData
                                                                                options:options
                                                                     documentAttributes:nil
                                                                                  error:&error];
    if (error != nil)
    {
        NSLog(@"Ошибка: %@", error);
    }
Ошибка: Error Domain=NSCocoaErrorDomain Code=259 "The operation couldn’t be completed. (Cocoa error 259.)"

Помогите пожалуйста исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2014, 12:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос NSAttributedString - Как вставить HTML? (Objective-C):

Нужно всего лишь вставить эмблему при запуске, сменить название в главном меню да вставить текст в эбаут - Программирование iOS
Уважаемые! Пишет вам человек гуманитарного склада ума, которому нужна помощь от склада ума не гуманитарного! Дело в том, что у меня...

Как вставить в текущую html-страницу содержимое другого html-файла? - PHP
Как вставить в текущую html-страницу содержимое другого html-файла? Допустим есть файл index.php: &lt;html&gt; &lt;head&gt;&lt;/head&gt; &lt;body&gt;...

Вставить HTML текст в шаблон, как HTML тэги - AngularJS
Всем привет! Я работаю в Angular 1.4 и у меня есть задача: Получить HTML из $http.get(url) и вставить его в шаблон. Как это можно...

Как вставить html + js в php? - PHP
Здравствуйте, не получается вставить код google map в php код, она просто не прогружается(( &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; ...

Как в php вставить html - PHP
Господа, имеется форма подписки, собственно вот она: &lt;style type=&quot;text/css&quot;&gt; ...

Как вставить картинки в HTML? - HTML, CSS
всем привет я хотел спросить я создал HTML страничка и там вставить надо рисунки более 20ти и как там вставить. не одном но можно ли там...

9
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
23.09.2014, 13:52 #2
NSAttributedString - Как вставить HTML?
https://github.com/honcheng/RTLabel
0
vitalik_a
4 / 4 / 1
Регистрация: 11.09.2014
Сообщений: 81
24.09.2014, 00:09  [ТС] #3
не поддерживает списки

Добавлено через 5 минут
<ul><li>
0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
24.09.2014, 01:16 #4
не поддерживает списки

Добавлено через 5 минут
<ul><li>
Для особо тяжелых HTML только UIWebview, либо подгототавливайте вашу верстку под поддерживаемые теги.
0
Vorona
24.09.2014, 02:28
  #5

Не по теме:

Цитата Сообщение от noname_club Посмотреть сообщение
https://github.com/honcheng/RTLabel
вот это дичь, при чем тут html к cocoa, давайте еще javascript инъекции делать в куски экрана...

0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
24.09.2014, 03:23 #6
вот это дичь, при чем тут html к cocoa, давайте еще javascript инъекции делать в куски экрана...
Вы видимо не знакомы с CoreText.framework

RTLabel это просто обертка над ним, которая упрощает "рисование текста"
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
24.09.2014, 08:27 #7
vitalik_a, воспользуйтесь DTCoreText.
В нем есть класс DTHTMLAttributedStringBuilder.
Работать нужно например так:
Objective-C
1
2
3
4
5
- (NSAttributedString *)attributedDescription {
    NSDictionary *dict = @{DTUseiOS6Attributes : @YES, DTDefaultFontSize: @(15.f), DTDefaultFontFamily : @"Avenir Next"};
    DTHTMLAttributedStringBuilder *builder = [[DTHTMLAttributedStringBuilder alloc] initWithHTML:[self.htmlDescription dataUsingEncoding:NSUTF8StringEncoding] options:dict documentAttributes:&dict];
    return builder.generatedAttributedString;
}
P.S Сразу скажу, что картинки НЕ поддерживает он. Если захотите еще картинки - выход у вас будет один - UIWebView. Остальное слишком громоздко и сложно(Да и в opensource я не видел решений).
1
vitalik_a
4 / 4 / 1
Регистрация: 11.09.2014
Сообщений: 81
24.09.2014, 14:03  [ТС] #8
у меня заработал код из первого поста, оказалось
Objective-C
1
2
3
4
NSAttributedString *textAttributedString = [[NSAttributedString alloc] initWithData:textData
                                                                                options:options
                                                                     documentAttributes:nil
                                                                                  error:&error];
не работает в фоновом потоке, его надо в блоке отправить в основной:
Objective-C
1
2
3
4
    dispatch_sync(dispatch_get_main_queue(),
                   ^(void)
                   {
                   });
0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
24.09.2014, 17:18 #9
у меня заработал код из первого поста, оказалось
Отлично, поскольку IOS8 уже вышла, следовательно IOS6 ушла в небытие. А это значит теперь открыт нативный метод HTML рендеринга без подключения дополнительных библиотек. IOS7+

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// только для IOS7+
    
    NSString * url = [[NSBundle mainBundle] pathForResource:@"01.html" ofType:nil];
    NSData * data = [NSData dataWithContentsOfFile:url];
    
    NSDictionary * options = @{
                               NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                               NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)
                               };
    
    NSAttributedString * str = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
    
    // отступы 5x8
    
    CGRect z = [str boundingRectWithSize:CGSizeMake(_textView.frame.size.width - 5*2, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) context:0];
    
    z.size.height += 8*2;
    
    NSLog(@"TEXT HEIGHT IS %f", z.size.height);
    
    CGRect frame = _textView.frame;
    frame.size.height = z.size.height;
    
    _textView.frame = frame;
    
    _textView.attributedText = str;
NSAttributedString - Как вставить HTML?

Исходник прикреплен.

Офф документация:
https://developer.apple.com/library/...umentAttribute
0
Вложения
Тип файла: zip NSAttributedString HTML.zip (216.5 Кб, 7 просмотров)
Alexandr201501
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 1
01.06.2015, 14:22 #10
У меня приложение запускается долго, и в лог идут сообщения
Objective-C
1
2
3
2015-06-01 17:20:32.372 NSAttributedString HTML[79851:432169] +[CATransaction synchronize] called within transaction
2015-06-01 17:20:32.374 NSAttributedString HTML[79851:432169] +[CATransaction synchronize] called within transaction
2015-06-01 17:20:32.602 NSAttributedString HTML[79851:432169] TEXT HEIGHT IS 298.875977
0
01.06.2015, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2015, 14:22
Привет! Вот еще темы с ответами:

Как вставить html в php? - PHP
нужно вставить тег span, пробовал так: '&lt;span class=&quot;todayfilms&quot; &gt;' . '&lt;/span&gt;' . но никакой реакции, в исходном коде тег не...

Как вставить svg в html - PHP
Вот код svg или же scss Как вставить в html страницу? HTML, BODY { height: 100%; } $colors: #360745, #D61C59, #E7D84B,...

Как вставить Flash в HTML - HTML, CSS
Нужно чтобы вот эта флешка http://www.yapriedu.ru/metro/map.swf отобразилась на моей странице но с меньшими размерами, по ширине 700 px. ...

Как вставить в html код .xls - HTML, CSS
Как вставить в html код .xls


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru