Как создать пользовательскую таблицу уведомлений в стиле Facebook-App? - PullRequest
2 голосов
/ 31 мая 2010

Я хочу добавить настраиваемую таблицу в свое приложение для iPhone, которая должна выглядеть и работать так же, как та, которая используется в приложении facebook с отображением уведомлений. Он должен содержать строки со ссылками в нем. Текст должен быть черным, в то время как части с возможностью нажатия должны отображаться синим цветом.

Как уже выяснилось, у ярлыков есть только один шрифт, цвет и т. Д., И вы не можете смешивать стили внутри него, мне придется использовать разные компоненты. Текстовые части с вкладками могут быть UIB-кнопками с пользовательским стилем без рамки.

Я пробовал разные подходы для создания пользовательской ячейки. Я использовал Interface Builder для компоновки компонентов, но поскольку разные части имеют переменную длину, они накладывались друг на друга. Я также попытался добавить экземпляры UIButton и UILabel в качестве подпредставления к контенту ячейки, как описано в руководстве Apple . Проблема в том, что: Положение и размер компонентов фиксируются и устанавливаются, когда они создаются с использованием «initWithFrame: ...».

В двух словах, я хочу добавить метки и кнопки без фиксированного положения или размера, кнопки должны быть активными и высота ячейки должна автоматически устанавливаться в соответствии с содержимым.

Вот скриншот представления уведомлений приложения Facebook: уведомления приложения Faceboo http://img84.imageshack.us/img84/4662/photodn.jpg

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Вариант 1. Использование UIWebview для отображения текста и форматирования его в формате HTML. Для ссылок используйте пользовательский URL-адрес, который отправляется обратно в ваше приложение, и в ответ на него отображается соответствующее представление.

Вариант 2. Используйте NSString UIKit Additions для непосредственного управления размером меток или для рисования текста в изображениях, которые могут функционировать как кнопки. В любом случае вы будете использовать методы дополнения для вычисления размера отображения строки в пикселях, а затем при необходимости отрегулируйте размер отдельного представления дисплея (метка, кнопка, изображение и т. Д.), Прежде чем делегат табличного представления вернет ячейку табличному представлению. ,

Любой из вариантов требует много тщательного кодирования. Будет приятно, когда iPhoneOS поддерживает атрибутивные строки.

Edit:

Похоже, Three20 имеет стилизованное текстовое представление. Выглядит так, как будто вы можете помещать в таблицы и поддерживает ссылки. Я не использовал его, но он может делать то, что вы хотите.

1 голос
/ 14 июня 2010

Вы могли бы подумать, что это будет легко, но на самом деле это чертовски сложно. UIKit не настроен для этого. Самый простой способ - использовать библиотеку Three20 - хотя бы прочитайте код, чтобы понять, что для этого нужно.

В OS 4 может быть что-то, что делает это проще. Если вы узнаете, пожалуйста, напишите об этом!

0 голосов
/ 03 июня 2010

В вашем примере на Facebook кажется, что это только одна строка с переносом строки.

Чтобы разрешить разрывы строк, просто добавьте это в свой cellForRowAtIndexPath


// load cell description; set nrOfLines to 0 to allow linebreaks
cell.detailTextLabel.numberOfLines = 0;

При этом вы сможете справиться с фиксированными позициями динамического контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...