Повторение фонового изображения в родном приложении для iPhone - PullRequest
47 голосов
/ 22 октября 2008

Если не считать UIWebView в качестве самого заднего слоя в моем файле пера, как я могу добавить повторяющееся фоновое изображение в приложение для iPhone (например, вельветовый вид на фоне сгруппированного UITableView)?

Нужно ли создавать изображение размером с экран iPhone и вручную повторять его, используя копирование и вставку?

Ответы [ 4 ]

160 голосов
/ 22 октября 2008

Очевидно, что UIColor не обязательно является одним цветом, но может быть и шаблоном. Смущает, что это не поддерживается в Интерфейсном Разработчике.

Вместо этого вы устанавливаете backgroundColor вида (скажем, в -viewDidLoad) с помощью вспомогательного метода + colorWithPatternImage: и передаете ему изображение пользовательского интерфейса. Для экземпляра:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"gingham.png"]]; 
}

Конечно, не забудьте добавить файл изображения в ваш пакет приложений.

Есть также несколько встроенных фоновых рисунков "colors":

  • groupTableViewBackgroundColor
  • viewFlipsideBackgroundColor

Поскольку они используются во всех приложениях для iPhone, вы подвергаетесь обоюдоострому мечу обновления ОС, обновляющего внешний вид вашего приложения (придающего ему новый, новый вид, который может работать или не работать правильно).

Например:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; 
}
2 голосов
/ 22 октября 2008

Вы можете даже иметь анимированные мозаичные фоновые изображения, которые перемещаются. : D

Приложения Amuck имеет простое руководство, которое покажет вам, как сделать это на своем сайте.

31 дней iPhone приложений - День 16: World Tour

2 голосов
/ 22 октября 2008

Вы должны взглянуть на пример кода iPhone от QuartzDemo от Apple, в частности QuartzImageDrawing.m. Следует использовать следующий вызов метода.

CGContextDrawTiledImage
1 голос
/ 13 июля 2010

Вы должны использовать colorWithPatternImage

...