带有 UIAppearance 的自定义 class 上的圆形按钮
Round button on custom class with UIAppearance
我正在尝试使用 UIAppearance()
在自定义 class 上应用样式
class MainStyleButton: UIButton {}
使用代码:
let buttonView = MainStyleButton.appearance()
buttonView.backgroundColor = Style.buttonColor
buttonView.layer.cornerRadius = 5
buttonView.layer.borderWidth = 5
buttonView.layer.borderColor = Style.buttonColor.cgColor
它适用于颜色,但不幸的是我的按钮没有变圆。我将不胜感激任何提示。
在模拟器 iPhone X, 8 和 iOS 11.2.
上测试
我尝试复制您的方法并设置一个按钮。我尝试使用您的代码在 viewDidLoad
期间更改 UIViewController
中的按钮外观,并在 applicationDidFinishLaunching
期间更改 AppDelegate
中的按钮外观。我还测试了将按钮类型从默认类型 .system
更改为 .custom
。 None 这似乎有效,我无法覆盖您无法覆盖的相同属性。
来自 Apple's docs 我了解到按钮类型定义了它的外观以及可以覆盖哪些外观属性:
A button’s type defines its basic appearance and behavior. You specify the type of a button at creation time using the init(type:) method or in your storyboard file. After creating a button, you cannot change its type.
我不知道为什么你感兴趣的属性此时不能改变
不过,我想提供一种我个人使用的不同方法,它允许您更改按钮的外观。由于您已经定义了自定义 class ,因此定义角半径和其他您想要的属性要简单得多(或者您可以编写一个带有参数的样式函数,您可以随时调用它,以便能够根据按钮的使用位置更改外观):
class MainStyleButton: UIButton {
override func awakeFromNib() {
layer.borderColor = Style.buttonColor.cgColor
layer.borderWidth = 5
layer.cornerRadius = 5
}
}
或者您可以 instantiate/use 系统按钮的 IBOutlet 并执行此操作:
class MyViewController: UIViewController {
@IBOutlet weak var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// not necessary to do this is viewDidLoad, that's just my example
myButton.layer.borderColor = Style.buttonColor.cgColor
myButton.layer.cornerRadius = 5
myButton.layer.borderWidth = 5
}
我正在尝试使用 UIAppearance()
在自定义 class 上应用样式class MainStyleButton: UIButton {}
使用代码:
let buttonView = MainStyleButton.appearance()
buttonView.backgroundColor = Style.buttonColor
buttonView.layer.cornerRadius = 5
buttonView.layer.borderWidth = 5
buttonView.layer.borderColor = Style.buttonColor.cgColor
它适用于颜色,但不幸的是我的按钮没有变圆。我将不胜感激任何提示。 在模拟器 iPhone X, 8 和 iOS 11.2.
上测试我尝试复制您的方法并设置一个按钮。我尝试使用您的代码在 viewDidLoad
期间更改 UIViewController
中的按钮外观,并在 applicationDidFinishLaunching
期间更改 AppDelegate
中的按钮外观。我还测试了将按钮类型从默认类型 .system
更改为 .custom
。 None 这似乎有效,我无法覆盖您无法覆盖的相同属性。
来自 Apple's docs 我了解到按钮类型定义了它的外观以及可以覆盖哪些外观属性:
A button’s type defines its basic appearance and behavior. You specify the type of a button at creation time using the init(type:) method or in your storyboard file. After creating a button, you cannot change its type.
我不知道为什么你感兴趣的属性此时不能改变
不过,我想提供一种我个人使用的不同方法,它允许您更改按钮的外观。由于您已经定义了自定义 class ,因此定义角半径和其他您想要的属性要简单得多(或者您可以编写一个带有参数的样式函数,您可以随时调用它,以便能够根据按钮的使用位置更改外观):
class MainStyleButton: UIButton {
override func awakeFromNib() {
layer.borderColor = Style.buttonColor.cgColor
layer.borderWidth = 5
layer.cornerRadius = 5
}
}
或者您可以 instantiate/use 系统按钮的 IBOutlet 并执行此操作:
class MyViewController: UIViewController {
@IBOutlet weak var myButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// not necessary to do this is viewDidLoad, that's just my example
myButton.layer.borderColor = Style.buttonColor.cgColor
myButton.layer.cornerRadius = 5
myButton.layer.borderWidth = 5
}