现在已经在网上找了一段时间,并且没有得到关于如何做到这一点的直接答案。
在我的应用中,我需要一个"下一个"驻留在许多ViewControllers上的按钮。我希望下一个按钮是相同的(有边框,相同的背景颜色,相同的自定义字体,相同的字体大小,相同的按钮大小)。
//Next Button Properties
[self.nextButtonOutlet setFrame:CGRectMake(120, 454, 80, 30)];
[[self.nextButtonOutlet layer] setBorderWidth:2.0f];
[[self.nextButtonOutlet layer] setBorderColor:UIColorFromRGB(0xbbffd6).CGColor];
self.nextButtonOutlet.titleLabel.font = [UIFont fontWithName:@"GothamRnd-Light" size:22.0];
[self.nextButtonOutlet setTitle:@"next" forState:UIControlStateNormal];
[self.nextButtonOutlet setBackgroundColor:UIColorFromRGB(0x72CE97)];
[self.nextButtonOutlet setTitleColor:UIColorFromRGB(0xbbffd6) forState:UIControlStateNormal];
在每个视图控制器中编写所有代码似乎很愚蠢。
任何人都有解决方案吗?
答案 0 :(得分:2)
您可以为UIButton创建扩展,并添加一个返回自定义UIButton的新方法。
在objective-c:
+ (UIButton *)nextButton {
// Create and return your button here
}
或在Swift中:
extension UIButton {
class func nextButton() -> UIButton {
// Create and return your button here
return nextButton()
}
}
然后使用:
创建它UIButton.nextButton()
答案 1 :(得分:0)
有一些选择。
我更喜欢单独的xib,特别是对于动画丰富的按钮。
答案 2 :(得分:0)
class ReusableButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.layer.borderWidth = 1
self.layer.borderColor = UIColor.lightGray.cgColor
self.backgroundColor = .blue
self.titleLabel?.font = UIFont(name: "fontName", size: fontSize)
self.setTitle(title: "save", for: .normal)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
现在,在创建新按钮时,您只需声明
var myBtn = ReusableButton()
希望这会有所帮助。快乐编码:]