Swift 4 - 获得按钮宽度的一半

Posted

技术标签:

【中文标题】Swift 4 - 获得按钮宽度的一半【英文标题】:Swift 4 - Getting half the width of a button 【发布时间】:2018-08-12 12:21:10 【问题描述】:

我正在尝试制作一个完全圆形的按钮。我已经在代码中创建了它并设置了这样的约束:

    addButton.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.2).isActive = true
    addButton.heightAnchor.constraint(equalTo: addButton.widthAnchor).isActive = true
    addButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -30).isActive = true
    addButton.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor, constant: -30).isActive = true

然后我尝试使用以下方法设置按钮的圆角半径:

    addButton.layer.cornerRadius = 
    addButton.layer.masksToBounds = true

但我不知道在拐角半径中放什么。我试过 frame.width / 2 但按钮仍然是方形的。我需要获取宽度约束的值,但无法将其转换为 CGFloat。

关于如何做到这一点的任何建议?

谢谢

【问题讨论】:

问题是使用圆角半径使按钮变成圆形是一种愚蠢而粗暴的方法。如果您想要一个看起来是圆形的按钮,请将圆形背景图像和/或蒙版绘制成圆形。 【参考方案1】:

viewDidLayoutSubviews里面放

addButton.layer.cornerRadius = self.view.frame.width * 0.1 

【讨论】:

【参考方案2】:

您可以使用 @Sh_Khan 发布的上述答案(网址:https://***.com/a/51808795/7425588)或使用以下内容:

addButton.layer.cornerRadius = addButton.widthAnchor.constant / 2.0
addButton.clipToBounds = true

记得把 UIObject 做成一个完整的圆形,让它的高度和宽度相等或纵横比为 1:1。将 clip 的 bounds 设置为 true,并将角半径设置为宽度或高度的一半。

【讨论】:

以上是关于Swift 4 - 获得按钮宽度的一半的主要内容,如果未能解决你的问题,请参考以下文章

Android开发点滴 - 如何使按钮水平垂直居中且始终占据屏幕宽度一半

以编程方式添加约束以防止按钮重叠 SWIFT 4

我们可以在 swift 中更改 UIAlertController 按钮的高度和宽度吗

如何在TableRow中使用Android填充宽度制作切换按钮

Swift以编程方式制作宽度百分比

实现类似iOS拍照的按钮滑动功能