Установите закругленные углы глобально на кнопках UIB в приложении iOS

Есть ли способ установить UIB-кнопки с закругленными углами глобально, как с цветом ниже?

[[UIButton appearance] setBackgroundColor:[UIColor purpleColor]];

4 ответа

Решение
#import <QuartzCore/QuartzCore.h>

Добавьте это в свой заголовочный файл.

затем в реализации,

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 100, 100,50);
[btn setTitle:@"Hello" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor colorWithRed:128.0/255.0f green:0.0/255.0f  blue:0.0/255.0f alpha:0.7]];
btn.frame = CGRectMake(100.0, 100.0, 120.0, 50.0);//width and height should be same  value
btn.clipsToBounds = YES;

btn.layer.cornerRadius = 20;//half of the width
btn.layer.borderColor=[UIColor redColor].CGColor;
btn.layer.borderWidth=2.0f;

cornerRadius сделает трюк для вас.. Дайте мне знать, если нужно больше информации..:)

редактировать

Это не может быть достигнуто глобально. Как вы использовали appearence, вот список, чтобы увидеть, что вы можете настроить с UIAppearance, то, что вы можете сделать, это вы можете создать подкласс вашего UIButton, и там вы можете написать реализацию setCornerRadius в initWithCoder Метод.

Список свойств, которые вы можете установить с помощью UIAppearance, находится здесь:

Какие свойства я могу установить через прокси UIAppearance?

К сожалению, закругленные углы не являются чем-то возможным.

Вы можете использовать что-то вроде beautify ( https://github.com/beautify/beautify-ios), которое расширяет возможности элементов управления UIKit, позволяя вам указывать округлые кнопки.

С помощью beautify вы получите глобально закругленные кнопки:

BYTheme *theme = [BYTheme new];
theme.buttonStyle.border = [[BYBorder alloc] initWithColor:[UIColor blackColor]
                                                     width:2.0f
                                                    radius:5.0f];

[[BYThemeManager instance] applyTheme:theme];

Я нашел эту ссылку. Пожалуйста, посмотрите, может ли это помочь.

Укрощение UIButton

Это использует это

[[basicButton layer] setCornerRadius:18.0f];

Как я уже упоминал в предыдущем ответе. Вы должны подкласс UiButton для этого..:)

Рекомендации по миграции для работающего решения в Swift (также возможно использование эквивалентной категории ObjC в UIView):

1. Добавьте это расширение https://gist.github.com/d3ce2e216884541217d0

2. Код:

let a = UIButton.appearance()
a.layerCornerRadius = 20.0
a.layerBorderColor = UIColor.redColor().CGColor
a.layerBorderWidth = 2.0

Этот вид взлома работает из-за того, как копируются свойства. Все appearance изменения в таких вещах, как a.layer а также a.titleLabel не распространяются, но свойства расширения копируются.

Другие вопросы по тегам