Растягиваемый и Pattern UIImage одновременно - PullRequest
7 голосов
/ 15 ноября 2011

Я хотел бы закодировать полку, и я не хочу думать об изменении размера и изменении фоновых изображений при повороте и в зависимости от размера экрана (iPad / iPhone).Можно ли создать изображение, которое будет растягиваться по горизонтали, но повторяться по вертикали?К настоящему времени я нашел только [UIColor colorWithPatternImage:] и [UIImage strechableImageWithLeftCapWidth:topCapHeight:] или новый [UIImage resizableImageWithCapInsets:].Но мне не удалось заставить их работать вместе, очевидно.

Я надеюсь, что иллюстрация поможет понять мою проблему:

Illustration

У вас есть идеи, какчтобы выполнить вышесказанное, чтобы оно работало с одним изображением для разных размеров и ориентаций?Спасибо!

Ответы [ 3 ]

3 голосов
/ 02 февраля 2013

Мне также нужно было установить фон UIView из изображения и одновременно изменить его размер.То, что я сделал, было:

  1. Создано изображение в рамке моего размера просмотра
  2. Установите фон просмотра, используя [UIColor colorWithPatternImage:(UIImage*)]

И вот код:

UIGraphicsBeginImageContext(self.followView.frame.size);
[[UIImage imageNamed:@"background_content.png"] drawInRect:self.followView.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIColor *bgColor = [UIColor colorWithPatternImage:image];

[followView setBackgroundColor:bgColor];
2 голосов
/ 16 ноября 2011

[UIColor colorWithPatternImage:] может занимать слишком много памяти при работе с большим количеством строк.Я закончил тем, что создал одно представление изображения, которое было на одну строку больше, чем все представление, используя [UIColor colorWithPatternImage:], а затем сместил это представление вверх или вниз по мере необходимости, когда представление собиралось прокрутить за пределы экрана.Поскольку представление перемещается только на границах строк, производительность оказалась намного лучше, чем я ожидал.

Однако лучшим вариантом будет создание пула отдельных UImageViews с использованием [UIColor colorWithPatternImage:] и разбиение их на плитки, аналогично тому, что UITableView сделает с ячейками табличного представления.

Apple имеетпример кода, который иллюстрирует эту технику в примере проекта ScrollView Suite и видео «Разработка приложений с использованием прокрутки» из WWDC 2010.

0 голосов
/ 16 ноября 2011

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

РЕДАКТИРОВАТЬ:

Мои знания о AQGridView ограничены, но звучаткак вы могли бы получить доступ к каждой отдельной «сетке».

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

Кроме того, вы, вероятно, должны упомянуть, что выиспользуя AQGridView в своем вопросе, чтобы другие пользователи не думали, что вы используете UITableView.

...