[英]UIButton appearance layer in appdelegate not working
我想將應用程序中的所有按鈕設為圓形按鈕。
但是UIButton的外觀不會更改appdelegate中的圖層屬性:
[[[UIButton appearance] layer] setMasksToBounds:YES];
[[[UIButton appearance] layer] setCornerRadius:8.0f];
怎么了?
非常感謝
由於這是一個古老的問題,但卻是相關的,因此您無法使用外觀更改圖層屬性。 有關完整列表,請檢查此頁面 。
對於UIButton,有效選項為:
//UIView
@property(nullable, nonatomic,copy) UIColor *backgroundColor UI_APPEARANCE_SELECTOR;
//UIButton
@property(nonatomic) UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR;
- (void)setTitleColor:(nullable UIColor *)color forState:(UIControlState)state UI_APPEARANCE_SELECTOR;
- (void)setTitleShadowColor:(nullable UIColor *)color forState:(UIControlState)state UI_APPEARANCE_SELECTOR;
- (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR;
如果有人正在尋找一個快速解決此問題的方法,即使在6年后,由於外觀無法管理CALayer,您可以對UIView進行擴展以使其適合外觀,訣竅是在obj變量上使用dynamic關鍵字,這將迫使迅捷使用以下實現:
extension UIView {
@objc dynamic var borderColor: UIColor? {
get {
if let color = self.layer.borderColor {
return UIColor(cgColor: color)
} else {
return nil
}
}
set(color) {
self.layer.borderColor = color?.cgColor
}
}
@objc dynamic var borderWidth: NSNumber? {
get { return NSNumber(value: Float(self.layer.borderWidth))}
set(width) {
self.layer.borderWidth = CGFloat(width?.floatValue ?? 0)
}
}
@objc dynamic var cornerRadius: NSNumber? {
get { return NSNumber(value: Float(self.layer.cornerRadius))}
set(radius) {
self.layer.cornerRadius = CGFloat(radius?.floatValue ?? 0)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.