Как установить границу прямоугольника для пользовательского типа UIButton - PullRequest
12 голосов
/ 12 мая 2009

Я пытаюсь установить изображение в качестве фона пользовательской кнопки UIB. Мне удалось установить фоновое изображение для UIButton «скругленный прямоугольник» в конструкторе интерфейсов, но теперь границы исчезли. Есть ли способ сохранить границы? Кроме того, я хотел бы, чтобы границы отображались прямоугольными, а не закругленными.

Ответы [ 6 ]

43 голосов
/ 06 октября 2011
    #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]];

я знаю, что это старый вопрос, но все же я хотел бы опубликовать свой ответ здесь. так как я искал ответ, но решил это легко.

17 голосов
/ 12 мая 2009

Проверьте свойства 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;
}
8 голосов
/ 18 января 2012

Вы также можете "Определить пользовательские атрибуты времени выполнения" в IB, чтобы установить закругленные углы, как на рисунке ниже.

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

7 голосов
/ 14 марта 2012

Я просто хотел бы добавить к ответам, предоставленным Нанши и Джонатаном.

Чтобы получить доступ к свойствам слоя border и cornerRadius, сначала необходимо импортировать среду QuartzCore.

#import <QuartzCore/QuartzCore.h>

В противном случае вы не сможете получить доступ к свойствам.

3 голосов
/ 13 мая 2009

Когда вы устанавливаете фоновое изображение для кнопки, контуры кнопки исчезают. Включите их в свой образ, если вам нужны разные размеры, посмотрите на UIImage

stretchableImageWithLeftCapWidth:topCapHeight:

способ.

1 голос
/ 02 августа 2013

Вы можете установить свойства границ в CALayer, открыв свойство layer кнопки.

Сначала добавьте кварц

#import <QuartzCore/QuartzCore.h>

Установить свойства:

[[myButton layer] setBorderWidth:2.0f];
[[myButton layer] setBorderColor:[UIColor greenColor].CGColor];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...