Создание пользовательского UIButton - PullRequest
3 голосов
/ 25 апреля 2010

Я хочу создать пользовательскую кнопку UIB программно (не подкласс), мне бы хотелось, чтобы фоновое изображение растягивалось с увеличением ширины кнопки UIB. Как бы я это сделал?

Ответы [ 4 ]

15 голосов
/ 25 апреля 2010

Сначала создайте растягиваемый UIImage (при этом предполагается, что значение 'cap' в конце изображения вашей кнопки составляет 10 пикселей):

UIImage *backgroundImage = [[UIImage imageNamed:@"ImageBackground.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0];

Затем используйте растягиваемое изображение в качестве фона:

[myButton setBackgroundImage:backgroundImage forState:UIControlStateNormal];

Когда вы устанавливаете backgroundImage на UIButton для UIControlStateNormal, оно действует как фон для всех состояний, если только вы явно не установите другой backgroundImage для любого из других состояний.

1 голос
/ 13 августа 2010

Еще лучше, используйте свойство contentStretch UIView. В противном случае вы можете получить некоторые неприятные сюрпризы, если вы используете stretchableImageWithLeftCapWidth, чтобы уменьшить изображение или растянуть сложный рисунок с эффектами освещения или глянца.

0 голосов
/ 07 августа 2011

Хорошо, свойство contentStretch в UIView будет правильным решением, но, к сожалению, оно не работает со свойством фона UIButton (по крайней мере, XCode 4.0.2). Он даже выставлен в IB, поэтому вам не понадобится никакой код для него.

0 голосов
/ 25 апреля 2010

Вы должны установить UIImage, созданный с помощью « stretchableImageWithLeftCapWidth: topCapHeight: » - Метод в качестве фона кнопки. Например:

UIImage *yourBackgroundImage = [[UIImage imageNamed:@"yourImage.png"] stretchableImageWithLeftCapWidth:1 topCapHeight:1];
yourButton.backgroundColor = [UIColor colorWithPatternImage:yourBackgroundImage];
...