如何在iOS中以最佳方式创建自定义按钮并多次使用?

ard*_*a30 3 button ios swift

UIButton在ios中创建了一个自定义。我想使用相同的自定义按钮十次,它们具有相同的属性但标题不同。在不为每个按钮重复相同代码的情况下,最有效,最聪明的方法是什么?它应该是结构还是类还是其他?我该如何实施?我为自定义按钮更改的属性如下:

 @IBOutlet weak var button_1: UIButton!

 button_1.frame = CGRectMake(0.0, 0.0, button_1.frame.width, button_1.frame.height)
 button_1.clipsToBounds = true
 button_1.layer.cornerRadius = button_1.frame.width/2.0
 button_1.layer.borderColor = UIColor.whiteColor().CGColor
 button_1.layer.borderWidth=2.0
Run Code Online (Sandbox Code Playgroud)

Bri*_*ier 9

您可以创建自己的类,从 UIButton

import UIKit

@IBDesignable
final class CoyoteButton: UIButton {

    var borderWidth: CGFloat = 2.0
    var borderColor = UIColor.white.cgColor

    @IBInspectable var titleText: String? {
        didSet {
            self.setTitle(titleText, for: .normal)
            self.setTitleColor(UIColor.black,for: .normal)
        }
    }

    override init(frame: CGRect){
        super.init(frame: frame)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        setup()
    }

    func setup() {
        self.clipsToBounds = true
        self.layer.cornerRadius = self.frame.size.width / 2.0
        self.layer.borderColor = borderColor
        self.layer.borderWidth = borderWidth
    }
}
Run Code Online (Sandbox Code Playgroud)

要将文本设置为按钮,只需编写myButton.titleText = "myText"

然后,您可以UIButton从界面构建器中拖放一个,然后将该按钮的类更改为您自己的MyOwnButton,或者通过代码创建一个。


Nir*_*v D 5

您需要创建extensionUIButton是这样

extension UIButton {
    class func attributedButton(frame: CGRect) -> UIButton {
        let button = UIButton(frame: frame)
        button.clipsToBounds = true
        button.layer.cornerRadius = button_1.frame.width/2.0
        button.layer.borderColor = UIColor.whiteColor().CGColor
        button.layer.borderWidth = 2.0
        return button 
    }
}
Run Code Online (Sandbox Code Playgroud)

现在以这种方式调用此方法

let button = UIButton.attributedButton(frame: CGRectMake(20, 20, 10, 40)
button.setTitle("Title", forState: .Normal)
self.view.addSubview(button)
Run Code Online (Sandbox Code Playgroud)

现在,每次要创建具有这些固定属性的按钮时,都可以使用此方法。

  • 感谢您的回答。应该是选定的答案恕我直言。 (2认同)