Принятый ответ неверен. Вы можете установить свойства для слоев, однако вам нужно создать подкласс представления и открыть свойства слоя через методы доступа.
В качестве иллюстрации я буду использовать только одно свойство из вопроса, cornerRadius
:
Шаг 1:
Реализуйте подкласс UIButton.
#import <UIKit/UIKit.h>
@interface MyRoundedCornerButton : UIButton
@end
Шаг 2:
Добавить свойство, помеченное UI_APPEARANCE_SELECTOR
.
#import <UIKit/UIKit.h>
@interface MyRoundedCornerButton : UIButton
@property (readwrite, nonatomic) CGFloat cornerRadius UI_APPEARANCE_SELECTOR;
@end
Шаг 3:
Реализуйте новый класс.
@implementation MyRoundedCornerButton
- (void)setCornerRadius:(CGFloat)cornerRadius
{
self.layer.cornerRadius = cornerRadius;
}
@end
Шаг 4:
Установите радиус угла в прокси внешнего вида.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[MyRoundedCornerButton appearance].cornerRadius = 10.0;
...
}
Шаг 5:
Затем в IB (или там, где вы определяете создание представления) установите пользовательский класс представления (или создайте экземпляр экземпляра) MyRoundedCornerButton вместо UIButton.
Примечания:
Я сделал это, чтобы применить легко меняемый градиентный фон ко всему моему приложению. В моем случае все корневые представления контроллеров представления используют собственный класс. Этот пользовательский класс предоставляет CAGradientLayer
через +(Class)layerClass
метод. Затем я раскрываю свойства colors
и locations
нижележащего градиентного слоя, используя тег UI_APPEARANCE_SELECTOR
. Один раз при инициализации приложения настраивает все приложение. Вы даже можете предоставить пользователю цвета, чтобы они могли полностью настраивать цвета различных элементов управления.