Моделирование UITableViewCells с фонами градиента

Кортеж - это отдельная переменная, которая содержит 2 значения, поэтому, когда вы определяете ее в своей структуре, она все равно остается одной переменной / полем:

struct MyStruct {
    x: (u32, f32),
}
35
задан 16 April 2009 в 19:13
поделиться

5 ответов

Я работаю на Tumblr, и хотя я не писал приложение для iPhone ( он написал ), у меня есть источник, и я могу рассказать вам, как это делается.

В -tableView: cellForRowAtIndexPath:

cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackground.png"]];
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"postCellBackgroundSelected.png"]];

На самом деле довольно просто: изображения PNG в UIImageView в качестве фоновых представлений ячейки.

Эти два изображения представляют собой вертикальные градиенты 1 × 61, которые UIKit автоматически растягивает по горизонтали, чтобы соответствовать ширине ячейки.

62
ответ дан 27 November 2019 в 06:38
поделиться

Я бы использовал для этого Quartz 2D, но настройка изображений в Photoshop тоже вполне подходит.

Как для повышения производительности, если вы повторно используете ячейки по типу, я не думаю, что это будет проблемой, но если вы обнаружите, что это узкое место, вы можете нарисовать один раз в растровом контексте, получить изображение из этого и использовать его везде - своего рода гибридный раствор.

0
ответ дан 27 November 2019 в 06:38
поделиться

UITableViewCell поддерживает отдельные представления для своего фона и выбранного фона, поэтому имеет смысл использовать эти свойства. Для этого вам понадобится создать изображение, которое в любом случае будет иметь полный размер ячейки (UIImageView не растягивает его изображение), так что вы также можете сделать это один раз на настольном компьютере и сохранить циклы на телефоне, которые придется потратить, чтобы растянуть изображение или сделать его динамически. Хотя, если вы намереваетесь позволить пользователю изменять цвета градиента, вам все равно придется создать его один раз динамически.

0
ответ дан 27 November 2019 в 06:38
поделиться

Я думаю, что самый простой способ обработки UITableView с пользовательской ячейкой - это использование Interface Builder. Это делает работу с пользовательским интерфейсом намного проще, чем с помощью чистого ядра. Вот отличный учебник (с видео!) О том, как это сделать. Настоятельно рекомендуется. Я не использую никакой другой метод кодирования UITableView, так как следовал этому.

Сказав это, добавить градиент в вашу ячейку будет чрезвычайно легко. Просто используйте InterfaceBuilder, чтобы добавить изображение, содержащее ваш градиент, к представлению ячейки, и все готово. Вам не придется беспокоиться о Quartz, и с точки зрения производительности вы получите аналогичные результаты, поскольку компоненты CocoaTouch очень хорошо оптимизированы для выполнения простых задач, таких как отображение изображения.

0
ответ дан 27 November 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: