Установите закругленные углы глобально на кнопках 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];
Я нашел эту ссылку. Пожалуйста, посмотрите, может ли это помочь.
Это использует это
[[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
не распространяются, но свойства расширения копируются.