Apple Interface Builder: добавление подпредставления в UIImageView - PullRequest
54 голосов
/ 10 марта 2010

Я создал UIImageView с помощью Interface Bulder. Теперь я хочу разместить ярлык внутри него (как его подпредставление). В коде я могу напечатать что-то вроде: [myUIImageView addSubview:myUILabel]; Но могу ли я сделать это с помощью IB? Я нашел решение для UIView, но не могу найти что-то похожее для UIImageView.

Ответы [ 4 ]

111 голосов
/ 02 июня 2010

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

Так что есть простой обходной путь. Вместо перетаскивания экземпляра UIImageView в перо, просто перетащите UIView и измените его класс на UIImageView из UIView (опция инспектора cmd + 4). Единственное отличие, которое вы найдете в кончике для экземпляра imageView по умолчанию и вашего нового экземпляра подкласса UIImageView: вы не можете установить изображение для вашего нового imageView из кончика (опция cmd + 1). Таким образом, в методе -viewDidLoad соответствующего viewController установите изображение для этого выхода UIImageView.

Таким образом, вы можете свободно добавлять подпредставления к своим экземплярам "now UIImageView" в конструкторе интерфейсов, что очень просто.

Надеюсь, это поможет. , .

13 голосов
/ 12 октября 2012

Я хотел бы добавить ответ.

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

Затем поставьте UIImageview ДО этого.

Таким образом, UIView имеет подпредставления, а UIImageview является фоном UIView.

Я думаю, что это намерение Apple.

Вот скриншот:

enter image description here

Вот результат:

enter image description here

Не забудьте установить цвет фона

enter image description here

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

0 голосов
/ 03 марта 2013

Используйте этот код:

UIImage *image = [UIImage imageNamed:@"background.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view insertSubview:imageView atIndex:0];

(замените background.png на изображение ) (замените atIndex: 0 на любое место в корне .index, в которое вы хотите вставить изображение и отключить его.

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

В последней версии XCode (4.5) есть возможность перетаскивать нужные элементы управления на родительский.

Это довольно просто. Прикрепленный снимок экрана для того же. Я перетащил Label / TextField и Button в UIImageView enter image description here

...