我在UIButton
内有一个UIView
,有两个约束。这两个约束都在Interface Builder中设置,以便UIButton
在其superview中垂直和水平居中。
我想在UIButton
添加边框并将其四舍五入。跟随answer on SO后,我可以将按钮部分舍入。
出于某种原因,按钮不是真正的圆形。我认为这是因为我的身高和宽度不相等。每次我将按钮的宽度/高度设置为相等时,autolayout约束会将其重置为40x34。
我使用以下代码创建圆角按钮。
self.startButton.clipsToBounds = true
self.startButton.layer.cornerRadius = self.startButton.frame.height / 2
self.startButton.layer.borderWidth = 1
self.startButton.layer.borderColor = self.view.tintColor.CGColor
self.startButton.layer.shadowRadius = 6.0
self.startButton.layer.shadowColor = UIColor.blackColor().CGColor
self.startButton.layer.shadowOffset = CGSizeMake(0.0, 3.0)
self.startButton.layer.shadowOpacity = 0.65
为什么我的按钮垂直和水平居中会阻止我改变它的大小?我不明白为什么我不能设置按钮的大小,并根据我分配给它的大小值让约束重新居中。
我已将代码移至viewDidLayoutSubviews
,然后修改约束,以便将高度和宽度都限制为40x40。
override func viewDidLayoutSubviews() {
self.startButton.clipsToBounds = true
self.startButton.titleLabel?.text = "Start"
self.startButton.layer.cornerRadius = self.startButton.frame.height / 2
self.startButton.layer.borderWidth = 1
self.startButton.layer.borderColor = self.view.tintColor.CGColor
self.startButton.layer.shadowRadius = 6.0
self.startButton.layer.shadowColor = UIColor.blackColor().CGColor
self.startButton.layer.shadowOffset = CGSizeMake(0.0, 3.0)
self.startButton.layer.shadowOpacity = 0.65
}
这部分解决了我的问题;但并不完全。如果我没有为titleLabel
分配值,则该按钮是一个正确的圆形按钮。
但是,如果我为titleLabel
指定一个值,该按钮将变为圆角矩形而不是圆形。
但是文本没有出现在按钮中,这让我很困惑。我需要让按钮成为一个圆圈,缩放以适应它所拥有的内容。我的按钮类型设置为Custom
。我不知道这是否对此有任何影响。
在做了一些测试之后,我发现我正在为按钮设置边缘插入。一旦我删除了以下内容:
self.startButton.contentEdgeInsets = UIEdgeInsets(top: 25, left: 25, bottom: 25, right: 25)
我用@Leo的回答得到了预期的效果。
答案 0 :(得分:1)
你需要添加关于身高和身高的约束。按钮的宽度。
固定宽度和宽度高度或方位无线电都可以。
如果使用宽高比无线电,请在viewDidLayoutSubviews