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

http://i.stack.imgur.com/uBkuB.png

Ответ 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];