iOS пользовательская кнопка похожа на кнопку - PullRequest
5 голосов
/ 22 сентября 2010

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

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

1 Ответ

5 голосов
/ 22 сентября 2010

Вам нужно создать кнопку самостоятельно, используя изображения.Просто создайте пользовательскую кнопку UIB и назначьте соответствующие изображения для различных состояний кнопок, которые вас интересуют.

Вы можете использовать метод UIImage stretchableImageWithLeftCapWidth для создания растягиваемого изображения из изображения, предназначенного для растягивания ииспользуйте метод NSString sizeWithFont, чтобы определить, какой размер должна быть кнопка.

http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImage/stretchableImageWithLeftCapWidth:topCapHeight:

Что-то вроде этого может помочь:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

int capHeight = 31;
int capWidth = 9;
UIImage *buttonTemplate = [UIImage imageNamed:@"button_template.png"];
UIImage *stretchedButtonImage = [buttonTemplate stretchableImageWithLeftCapWidth:capWidth topCapHeight:capHeight];
[button setBackgroundImage:stretchedButtonImage forState:UIControlStateNormal];
...