Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
vitalik_a
4 / 4 / 1
Регистрация: 11.09.2014
Сообщений: 81
1

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

23.09.2014, 12:15. Просмотров 1520. Ответов 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
Ответы с готовыми решениями:

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

Как вставить в текущую html-страницу содержимое другого html-файла?
Как вставить в текущую html-страницу содержимое другого html-файла? Допустим...

Вставить HTML текст в шаблон, как HTML тэги
Всем привет! Я работаю в Angular 1.4 и у меня есть задача: Получить HTML из...

Как вставить svg в html
Вот код svg или же scss Как вставить в html страницу? HTML, BODY { height:...

Как вставить Flash в HTML
Нужно чтобы вот эта флешка http://www.yapriedu.ru/metro/map.swf отобразилась на...

9
noname_club
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
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
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
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
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
24.09.2014, 03:23 6
вот это дичь, при чем тут html к cocoa, давайте еще javascript инъекции делать в куски экрана...
Вы видимо не знакомы с CoreText.framework

RTLabel это просто обертка над ним, которая упрощает "рисование текста"
0
zulkis
684 / 611 / 43
Регистрация: 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
107 / 98 / 12
Регистрация: 01.05.2013
Сообщений: 603
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 Кб, 8 просмотров)
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 + js в php?
Здравствуйте, не получается вставить код google map в php код, она просто не...

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

Как в php вставить html
Господа, имеется форма подписки, собственно вот она: &lt;style...


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

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

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