Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Чтобы создать кнопку: (Примечание: это также будет работать с другими типами UIButtonType, но я использовал 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];

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top