Установка фонового изображения программно в Xib - PullRequest
6 голосов
/ 04 января 2012

У меня есть файл XIB с элементами UIControl и UIScrollView внутри. Я хотел бы добавить фоновое изображение для представления. Я попытался добавить ImageView в IB, но не смог представить его в качестве фона, и он скрыл элементы управления. Отправка сообщения sendViewBack, похоже, тоже ничего не делает.

Когда я создаю UIImageView программно, он не отображается.

Ниже приведен код, который я пытался:

Создание программы

UIImage *imageBackground = [UIImage imageWithContentsOfFile:@"globalbackground"];

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:imageBackground];

[[self view] addSubview:backgroundView];

[[self view] sendSubviewToBack:backgroundView];

Работа с файлом NIB

[[self view] sendSubviewToBack:background];

где background - это IBOutlet, объявленный в заголовочном файле и связанный с представлением изображения NIB в IB.

Есть ли шаг, который я здесь упускаю?

Ответы [ 2 ]

8 голосов
/ 04 января 2012

Установить рамку и не использовать sendSubviewToBack:.Если вы работаете с UIImageViews, вы должны использовать [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName.png"]];

UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageBackground"]];
backgroundView.frame = self.view.bounds;
[[self view] addSubview:backgroundView];

надеюсь, что это была сделка.

5 голосов
/ 04 января 2012
  • Не добавляйте представление изображения как подпредставление представления прокрутки, оно должно быть отдельным представлением на верхнем уровне иерархии, затем отправляется в конец Z-порядка.
  • Вам нужно будет установить фон вашего вида прокрутки на [UIColor clearColor] и убедиться, что вид прокрутки не помечен как непрозрачный. Вы можете сделать это в коде или в конструкторе интерфейса.
  • Не используйте imageWithContentsOfFile, а затем просто передайте ему имя файла без расширения (я предполагаю .png) - это, вероятно, возвращает nil. Вместо этого используйте imageNamed: (в этом случае расширение не предусмотрено, iOS4 и выше)

В зависимости от природы вашего изображения, вы также можете создать с ним цвет и использовать , что , в качестве цвета фона для просмотра с прокруткой. Я предполагаю, что self.view является представлением прокрутки:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"globalBackground"]];
...