(if你选择了“Inherit Module From Target”,将“Module”选项留给Xcode) 1.现在,您应该能够在类文件中 ctrl-dragcontentView,并有一个出口引用它 1.在类中创建初始值设定项,如下所示。
@IBOutlet weak var contentView: UIView!
// init used if the view is created programmatically
override init(frame: CGRect) {
super.init(frame: frame)
self.customInit()
}
// init used if the view is created through IB
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.customInit()
}
// Do custom initialization here
private func customInit()
{
Bundle.main.loadNibNamed("CustomButton", owner: self, options: nil)
self.addSubview(self.contentView)
self.contentView.frame = self.bounds
self.contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
3条答案
按热度按时间olmpazwi1#
这个有点旧了。不管怎样,这就是我在Xcode 10.1和Swift 4.2上成功做到的。
1.创建一个.xib文件,假设是
CustomButton.xib
,并在其中放入UIViewcontentView
1.创建一个.swift文件,并将其命名为
CustomButton.swift
1.打开.swift文件并定义自定义类如下:
1.现在打开.xib并选择
contentView
,然后在属性检查器中选择大小->自由形式。通过这种方式,您可以在IB中操作contentView
大小1.重要。在Identity Inspector中,不要将自定义类分配给
contentView
,即. xib的主视图。将其分配给文件的所有者----->
----->
(if你选择了“Inherit Module From Target”,将“Module”选项留给Xcode)
1.现在,您应该能够在类文件中 ctrl-drag
contentView
,并有一个出口引用它1.在类中创建初始值设定项,如下所示。
现在您应该能够使用.xib设计CustomButton并在任何您想要的地方使用它。
8nuwlpux2#
1.您可以在没有XIB文件的情况下配置背景颜色-您需要创建UIButton的子类并覆盖isHighlighted属性,如下所示:
导入UIKit
类OverlayButton:UI按钮{
1.如果你想用XIB文件创建一个自定义按钮-你可以创建一个自定义视图,如上面描述的@martin,然后在整个视图上放置一个UIButton。将其设置为backgroundColor = .clear表示正常状态,其他颜色表示高亮显示状态。
8yparm6h3#
我说的是做一个XIB文件只为一个按钮
实际上有一种方法,我还没有测试过,但我不认为它是苹果推荐的,因为当你添加一个新的按钮子类时,创建一个新的xib的选项是禁用的
创建可重用的按钮有两种方法,这取决于你想把按钮的实现放在哪里:
1.通过IB / storyboard设置按钮的外观,然后在需要的地方复制按钮,在你的案例中甚至不需要子类http://imgur.com/ayki0Li
1.通过代码设置颜色(或其他外观)并将其连接到情节提要上的按钮。这种方法的缺点是,除非使用IBDesignable http://imgur.com/DJlGAoF,否则看不到xcode上的更改
当然,你可以把上面的两种方法结合起来。通过接口生成器设置一些属性,然后通过
- (void)awakeFromNib
下的代码设置一些其他属性