Изображение против фонового изображения для UIButton - PullRequest
3 голосов
/ 25 октября 2009

У меня есть изображение размером 480x331 с прозрачным фоном. Прозрачная часть находится по краям изображения. Мой UIButton 72x37. Когда я устанавливаю изображение в качестве фонового изображения в IB для кнопки, прозрачные края изображения отображаются белым цветом на кнопке. Без изображения кнопка белая с закругленными углами. Я предполагаю, что это белый, который я вижу, проходящий. Если это так, это означает, что прозрачность изображения работает, но белая область кнопки просвечивает.

Если я установлю изображение на свойство Image UIButton, оно не будет правильно масштабироваться даже после изменения режима просмотра и останется в полном размере.

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

Ответы [ 2 ]

7 голосов
/ 28 октября 2009

Какой тип кнопки вы используете?

Возможно, вы используете стиль UIButtonTypeRoundedRect, но UIButtonTypeCustom может быть более подходящим Вы можете изменить это в окне инспектора Интерфейсного Разработчика.

6 голосов
/ 11 апреля 2011

@ Кристофер Фэрбаим вправе предложить использовать UIButtonTypeCustom. Использование UIButtonTypeRoundedRect даст вам белый фон в прозрачных областях.

Однако подключение к интерфейсу в Интерфейсном Разработчике имеет свои ограничения. Если вы хотите динамически генерировать UIViews, UIButton и ресурсы либо из набора данных, либо на основе пользовательского ввода, программирование - это путь.

Чтобы создать кнопку: (Примечание: это также будет работать с другими типами UIButton, но я использовал UIButtonTypeCustom для этого конкретного примера прозрачности.)

UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];

Чтобы изменить нужные свойства:

btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37);  //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];

Чтобы добавить изображения для различных состояний (предположим, это прозрачные файлы .png):

UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];

Чтобы добавить кнопку в представление (из класса viewController):

[self addSubview:btnName];

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

...