2010-10-30 5 views
13

Я устанавливаю цвет фона моего UIView (который находится в пределах UIViewController) следующим образом:iPhone - UIView's backgroundColor - используя png с прозрачностью?

myView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myTransparentBG.png"]]; 

Я даже пытался баловаться с [myView setOpaque:NO];, но изображение не появляется прозрачным. Он имеет черный фон. Можно ли исправить это программно? В противном случае, как мы должны установить прозрачный фон для нашего представления?

Это похоже на вопрос, который должен был быть задан раньше, но я не мог найти ответа.

ответ

32

При использовании прозрачного рисунка после установки свойства backgroundColor вам необходимо установить значение opaque на NO на оба вида и на его слой. Вот пример:

UIView* paperView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,700)]; 
paperView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"paper.png"]]; 

[paperView.layer setOpaque:NO]; 
paperView.opaque = NO; 
+0

Ага, это правильный ответ. Я не устанавливал непрозрачное свойство слоя. Благодаря! – chaiwalla

+1

Интересно, что вы должны установить непрозрачное свойство * после того, как вы установили фоновое изображение. Должен быть частью механизма рендеринга. –

+0

Спасибо Сэму, у меня была та же проблема. Также: последние две строки этого фрагмента кода делают то же самое. – titaniumdecoy

-1

Используйте это: myView.backgroundColor = [UIColor clearColor];

Это установит его на прозрачный фон.

+0

На это? Я хочу, чтобы изображение было фоном. У меня есть другие элементы пользовательского интерфейса внутри представления. – RyanJM

+0

Если вы установили цвет UIView для clearColor, тогда он будет прозрачным. В зависимости от того, где заказываются изображения и другие виды, вы можете поиграть с ними. – Istvan

0

Я никогда не делал этого, но вот что я попробую.

Установите UIView's .backgroundColor на номер [UIColor clearColor]. Затем поместите UIImageView, содержащий ваш PNG, как «самый низкий» элемент в стеке UIView в подзаголовках. Убедитесь, что цвет фона UIImageView также ясен.

+0

На самом деле, не было большой причины держать UIView, я закончил тем, что просто использовал UIImageView, а затем добавил все остальные элементы в качестве подзадач об этом, и он работает очень хорошо. – RyanJM

+0

@ RyanJM О да. Я иногда забываю, что в качестве подвид UIView UIImageView может с удовольствием держать subviews ... –

Смежные вопросы