Я пытаюсь установить изображение в качестве фона пользовательского UIButton. Я смог установить фоновое изображение для "закругленного прямоугольника" UIButton в построителе интерфейса, но теперь границы исчезли. Есть ли способ сохранить границы? Кроме того, я хотел бы, чтобы границы отображались прямоугольными, а не округлыми.
Как установить границу прямоугольника для пользовательского типа UIButton
Ответ 1
Когда вы устанавливаете фоновое изображение с помощью кнопки, контуры кнопок исчезают. Включите их в свой образ, если вам нужны разные размеры, посмотрите на UIImage
stretchableImageWithLeftCapWidth:topCapHeight:
метод.
Ответ 2
#import <QuartzCore/QuartzCore.h> // don't forget to add this in your file
CALayer * layer = [yourUIButton layer];
[layer setMasksToBounds:YES];
[layer setCornerRadius:0.0]; //when radius is 0, the border is a rectangle
[layer setBorderWidth:1.0];
[layer setBorderColor:[[UIColor grayColor] CGColor]];
Я знаю, что это старый вопрос, но все же я хотел бы опубликовать свой ответ здесь. так как я искал ответ, но решил, что это легко разрешено.
Ответ 3
Проверьте свойства cornerRadius
, borderWidth
и borderColor
CALayer
. Эти свойства новы по сравнению с iPhone OS 3.0.
Вероятно, вы хотите подклассом UIButton
, а затем установите эти свойства в конструкторе. У вашей кнопки есть свойство слоя, к которому вы можете получить доступ, чтобы установить эти свойства границы.
Вот пример:
- (id)initWithFrame:(CGRect)frame {
if(self = [super initWithFrame:frame]) {
[self.layer setBorderWidth:1.0];
[self.layer setCornerRadius:5.0];
[self.layer setBorderColor:[[UIColor colorWithWhite:0.3 alpha:0.7] CGColor]];
}
return self;
}
Ответ 4
Вы также можете "Определить пользовательские атрибуты времени выполнения" в IB, чтобы задать закругленные углы, как показано на рисунке ниже.
Ответ 5
Я просто хотел бы добавить ответы, полученные Нанши и Джонатаном.
Чтобы получить доступ к свойствам слоя border
и cornerRadius
, вам сначала нужно будет импортировать среду QuartzCore.
#import <QuartzCore/QuartzCore.h>
В противном случае вы не сможете получить доступ к свойствам.
Ответ 6
Вы можете установить свойства границы на CALayer, обратившись к свойствам слоя кнопки.
Сначала добавьте Quartz
#import <QuartzCore/QuartzCore.h>
Установить свойства:
[[myButton layer] setBorderWidth:2.0f];
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor];