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

Я просматриваю несколько руководств, в которых описываются способы применения пользовательских изображений к UIButton в программировании 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];

Проблема с этим методом заключается в том, что кнопка не теряет свой фон «Круглый прямоугольник», а сбоку от кнопок вы все еще можете видеть белый цвет кнопки «Круглый прямоугольник», выглядывающий сквозь пользовательские изображения.

Однако если я создам настраиваемую кнопку с нуля, используя этот код:

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» для размещения кнопок и снятия скинов, потому что я хотел бы видеть их положение в конструкторе интерфейсов. Есть ли метод, который мне нужно использовать, или свойство, которое мне нужно изменить, чтобы избавиться от белого фона кнопки «Круглый прямоугольник» в коде.

Вот изображение, показывающее проблему:

alt text


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


Ответы (2)


Я нашел ответ!

Обычно вы тратите часы на поиски руководств сразу после публикации!

Просто измените тип кнопки на «Пользовательский» в Интерфейсном Разработчике, и никакого дополнительного кода не требуется!

alt text

person Gary Willoughby    schedule 10.01.2011

Сделайте для кнопки цвета по умолчанию - «чистый цвет», забавную черно-белую диагональную штуку.

person Hack Saw    schedule 10.01.2011
comment
Эээээ, может мне следовало сказать, удостовериться, что тип кнопки IB - Custom? - person Hack Saw; 10.01.2011