我正在尝试设置cornerRadius
的{{1}},使其看起来像圆形,但我无法做到。
这是我尝试过的代码。
UIButton
答案 0 :(得分:2)
按钮边界/框架不会设置,直到自动布局完成。 你可以更新,
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Update corner radius here
colorButton.layer.cornerRadius = 0.5 * colorButton.bounds.size.width
}
答案 1 :(得分:0)
我认为你需要使用masksToBounds。
colorButton.layer.masksToBounds = true
答案 2 :(得分:0)
您可以创建可以在需要时使用的简单子类
我只是用阴影和圆角显示UIButton的引用,但你可以使它从故事板中使用这些属性IBInspectable。
类UIButtonShadow:UIButton {
var yPos : CGFloat = 2 {
didSet {
addBehavior()
}
}
var radius : CGFloat = 2 {
didSet {
addBehavior()
}
}
var cornerRadius : CGFloat = 18 {
didSet {
addBehavior()
}
}
override var bounds: CGRect {
didSet {
addBehavior()
}
}
override var frame: CGRect{
didSet{
addBehavior()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
addBehavior()
}
override func awakeFromNib() {
super.awakeFromNib()
addBehavior()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func addBehavior() {
self.layer.cornerRadius = cornerRadius
let shadowPath = UIBezierPath(roundedRect:self.bounds,cornerRadius:self.layer.cornerRadius)
self.layer.masksToBounds = false
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize(width:0.0,height:yPos)
self.layer.shadowOpacity = 0.3
self.layer.shadowPath = shadowPath.cgPath
self.layer.shadowRadius = radius
}
}