1,创建一个UIViewController
2,定义你想要的事件和属性,并且指定成IBOutlet和IBAction
3,再创建一个xib文件
4,进入这个新的xib文件,编辑File's Owner,将他的类型设置成我们创建的UIViewController
5,从这时候开始UIViewController就对应了两个xib文件了,这样我们可以通过编辑器来绑定内容。
6,随便加一些按钮,绑定些内容
- (void)viewDidLoad {
[super viewDidLoad]
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"sub" owner:self options:nil]
UIView *subView = [nibViews objectAtIndex:0]
[self.view addSubview:subView]
}
- (void)viewDidLoad {[super viewDidLoad]NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"sub" owner:self options:nil]UIView *subView = [nibViews objectAtIndex:0][self.view addSubview:subView]}
8,执行,你会看到子控件被载入到了UIViewController的View里了。并且,在编辑器里绑定的内容都是有效的。成功动态增加了UIViewController的内容。
swift用xib自定义View的方法如下:
1. 创建一个IDView,添加一个IDView.Xib
2. 对IDCard.xib添加约束
3、在IDCard.xib的 File's Owner class 设置为IDCard:
4、在IDCard.swift中添加如下代码,把xib的view连线到代码上的contentView:
5、绑定xib,实现 @IBInspectable, @IBDesignable这几部分代码
@IBDesignable
class IDCard: UIView {
@IBOutlet var contentView: UIView!
@IBInspectable
var cornerRadius: CGFloat = 0 {
didSet {
layer.cornerRadius = cornerRadius
layer.masksToBounds = cornerRadius >0
}
}
@IBInspectable
var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable
var borderColor: UIColor? {
didSet {
layer.borderColor = borderColor?.CGColor
}
}
override init(frame: CGRect) {
super.init(frame: frame)
initialFromXib()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialFromXib()
}
func initialFromXib() {
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "IDCard", bundle: bundle)
contentView = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
contentView.frame = bounds
addSubview(contentView)
}
}
6、运行代码,结果如下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)