Проблеми при прилагане на персонализирани кодирани изображения към кръгъл правоъгълен бутон в Interface Builder

Преглеждам няколко урока, които описват начини за прилагане на персонализирани изображения към UIButtons в програмирането на iPhone с помощта на Obj-C.

Един метод, който харесвам, е да поставя UIButton (Round Rect Button) на XIB с помощта на Interface Builder, след което в метода 'viewDidLoad' на контролера за изглед на XIB, кожата на бутона по следния начин:

UIImage *ButtonImageNormal = [UIImage imageNamed:@"button_blue.png"];
UIImage *StretchableButtonImageNormal = [ButtonImageNormal stretchableImageWithLeftCapWidth:24 topCapHeight:24];
[self.Button setBackgroundImage:StretchableButtonImageNormal forState:UIControlStateNormal];

UIImage *ButtonImagePressed = [UIImage imageNamed:@"button_orange.png"];
UIImage *StretchableButtonImagePressed = [ButtonImagePressed stretchableImageWithLeftCapWidth:24 topCapHeight:24];
[self.Button setBackgroundImage:StretchableButtonImagePressed forState:UIControlStateHighlighted];

Проблемът с този метод е, че бутонът не губи фона си „Round Rect“ и отстрани на бутоните все още можете да видите бялото на бутона „Round Rect“, което наднича през персонализираните изображения.

Ако обаче създам персонализиран бутон от нулата, използвайки този код:

UIButton *CustomButton = [UIButton buttonWithType:UIButtonTypeCustom];
[CustomButton setFrame:CGRectMake(20, 100, 280, 45)];
[CustomButton.titleLabel setFont:[UIFont boldSystemFontOfSize:15]];

[CustomButton setTitle:@"Custom Button" forState:UIControlStateNormal];
[CustomButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[CustomButton setBackgroundImage:[UIImage imageNamed:@"button_blue.png"] forState:UIControlStateNormal];

[CustomButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
[CustomButton setBackgroundImage:[UIImage imageNamed:@"button_orange.png"] forState:UIControlStateHighlighted];

[self.view addSubview:CustomButton];

Няма такъв бял фон, който да наднича.

Наистина бих искал да използвам метода „Round Rect“ за поставяне и отстраняване на бутони, защото бих искал да видя техните позиции в Interface builder. Има ли метод, който трябва да използвам, или свойство, което трябва да променя, за да се отърва от белия фон на бутон „Round Rect“ в кода.

Ето изображение, показващо проблема:

алтернативен текст


person Gary Willoughby    schedule 10.01.2011    source източник


Отговори (2)


Намерих отговора!

Обикновено прекарвате часове в търсене на ръководства, за да го намерите веднага след публикуване!

Просто променете типа бутон на „По избор“ в Interface Builder и няма нужда от допълнителен код!

алт текст

person Gary Willoughby    schedule 10.01.2011

Направете цветовете по подразбиране за бутона "ясен цвят", смешното черно-бяло диагонално нещо.

person Hack Saw    schedule 10.01.2011
comment
Errr, може би трябваше да кажа, уверете се, че типът бутон IB е Custom? - person Hack Saw; 10.01.2011