我正在Xcode 6的最新版本中使用swift构建一个应用程序,我想知道如何修改我的按钮,使它可以有一个圆形的边界,如果需要,我可以调整自己。一旦完成,我如何改变边界本身的颜色而不添加背景?换句话说,我想要一个略圆的按钮,没有背景,只有一个特定颜色的1pt边界。
当前回答
UIBuilder爱好者的解决方案:
检查UIButton的“Attribution Inspector”窗口中的“Clip to Bounds”复选框。[见下图1] 点击“身份检查器”,并点击“+”符号输入一个新的密钥路径:层。角半径,数字,8(或16等…) [见下图2]
图1:剪辑到边界复选框
图2:关键路径代码…
图3:结果图像按钮
其他回答
UIBuilder爱好者的解决方案:
检查UIButton的“Attribution Inspector”窗口中的“Clip to Bounds”复选框。[见下图1] 点击“身份检查器”,并点击“+”符号输入一个新的密钥路径:层。角半径,数字,8(或16等…) [见下图2]
图1:剪辑到边界复选框
图2:关键路径代码…
图3:结果图像按钮
要在故事板中完成这项工作(接口构建器检查器)
在IBDesignable的帮助下,我们可以为UIButton添加更多的界面构建器检查器选项,并在故事板上调整它们。首先,将以下代码添加到项目中。
@IBDesignable extension UIButton {
@IBInspectable var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat {
set {
layer.cornerRadius = newValue
}
get {
return layer.cornerRadius
}
}
@IBInspectable var borderColor: UIColor? {
set {
guard let uiColor = newValue else { return }
layer.borderColor = uiColor.cgColor
}
get {
guard let color = layer.borderColor else { return nil }
return UIColor(cgColor: color)
}
}
}
然后简单地设置storyboard上按钮的属性。
import UIKit
@IBDesignable
class RoundedButton: UIButton {
@IBInspectable var cornerRadius: CGFloat = 8
@IBInspectable var borderColor: UIColor? = .lightGray
override func draw(_ rect: CGRect) {
layer.cornerRadius = cornerRadius
layer.masksToBounds = true
layer.borderWidth = 1
layer.borderColor = borderColor?.cgColor
}
}
作为另一个提示,确保你的按钮不是任何自定义类的子类在故事板,在这种情况下,你的代码最好的地方应该在自定义类它自己的原因代码只出自定义类,如果你的按钮是默认UIButton类的子类和它的出口,希望这可能有助于任何人想知道为什么角收音机不适用于我的按钮从代码。
@IBOutlet weak var button: UIButton!
...
我认为对于半径来说,这个参数足够了:
button.layer.cornerRadius = 5
推荐文章
- 如何使用@Binding变量实现自定义初始化
- Swift设置为Array
- 如何设置回退按钮文本在Swift
- 我如何能在Swift扩展类型化数组?
- Swift类错误:属性未在super处初始化。init调用
- Swift to Objective-C头未在Xcode 6中创建
- 在Swift中将字典转换为JSON
- 我如何模仿地图应用程序的底部表格?
- 改变导航栏后退按钮的颜色
- Swift是否支持文档生成?
- 如何复制文本到剪贴板/剪贴板与Swift
- 如何在Swift中返回数组的前5个对象?
- 在Swift中以编程方式返回到以前的ViewController
- 按下UINavigationController后栏按钮时执行动作
- 如何隐藏键盘在迅速按下返回键?