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