Как стать автором
Обновить

Комментарии 9

Спасибо, очень полезно. Заметил, что платформа популярная, а статей на Хабре про iOS программирование крайне мало.
Про вывод текста понятно, хочется ещё узнать по поводу ввода.
Фреймворки или отдельные Html редакторы для собственных приложений уже появились?
Хочу сказать, что статей мало, так как есть очень хорошая официальная документация. Даже все, что есть в этой статье просто отлично разжевано в документации, с картинками, примерами, кусками кода и целыми проектами.
Конечно, все что здесь написано в конечном итоге почерпнуто из внешних источников: документации, WWDC, википедии. Право, как же может быть иначе, если приходится использовать готовое API?
Документация у эппла, не побоюсь этого слова, великолепна, но мне просто в один момент захотелось как-то систематизировать и структурировать собственные знания и описать то, что пригодилось в реальной жизни. Мне будет приятно, если кому-то это будет полезно.
Не подумайте, я не имею ничего против — такие статьи однозначно большой плюс и я не считаю их лишними, я просто рассказал почему их мало.
хочется ещё узнать по поводу ввода
Это очень интересная и довольно сложная тема. Если в общем, то делается контрол, который реализует методы протоколов UITextInput и UITextInputTraits. Таким образом мы перехватывает стандартные события аля insertText -> меняем текстовое представление -> перерисовываем. Все осложняется тем, что есть языки с направлением написания справа на лево и их смеси с традиционным написанием, иероглифы, тайский язык.
Фреймворки или отдельные Html редакторы для собственных приложений уже появились?
У нас, конечно, есть свои контролы для использования CoreText, а в HTML редакторе у нас не было нужды, если я верно понял Ваш вопрос.
Открывая статью, я думал что будет вольный пересказ документации. Как же порадовало содержание! И подробно, и с примерами, и явно из личного опыта! Спасибо большое за такую работу, побольше бы таких статей на хабре!
спасибо за познавательную и полезную статью
однако хочу сделать одно замечание: на ios 5 данная конструкция
NSDictionary *textAttributes = @{(NSString *)kCTFontAttributeName : [UIFont systemFontOfSize:16]};
является некорректной, ибо CoreText не умеет работать с UIFont и при попытке отобразить строку с такими атрибутами вылетает EXC_BAD_ACCESS.
Вместо этого необходимо применять CTFont, который не является toll-free bridged по отношению к UIFont. Вот пример конвертации который я применил в своем случае:
UIFont *boldFont = [UIFont boldSystemFontOfSize:fontSize]; NSDictionary * boldAttrs = @{(NSString *)kCTFontAttributeName:(__bridge id)CTFontCreateWithName((__bridge CFStringRef)boldFont.fontName, boldFont.pointSize, NULL)};
Спасибо за ценное замечание. Хотелось сделать код несколько более читаемым и не загружать примеры созданиями промежуточных сущностей и совсем выскочило из головы. Я сейчас внесу этот момент в статью.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий