Я бегу по нескольким учебным пособиям, в которых описываются способы применения пользовательских изображений для кнопок UIB при программировании 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];
Нет такого белого фона, выглядывающего сквозь.
Я действительно хотел бы использовать метод 'Rect Rect' для размещения и оформления кнопок, потому что я хотел бы видеть их позиции в Интерфейсном конструкторе. Есть ли метод, который мне нужно использовать, или свойство, которое мне нужно изменить, чтобы избавиться от белого фона кнопки «Round Rect» в коде.
Вот изображение, показывающее проблему: