如何使用xib为某一控件添加子控件

如何使用xib为某一控件添加子控件,第1张

通过以下步骤可以完成

1,创建一个UIViewController

2,定义你想要的事件和属性,并且指定成IBOutlet和IBAction

3,再创建一个xib文件

4,进入这个新的xib文件,编辑File's Owner,将他的类型设置成我们创建的UIViewController

5,从这时候开始UIViewController就对应了两个xib文件了,这样我们可以通过编辑器来绑定内容。

6,随便加一些按钮,绑定些内容

7,在viewDidLoad方法里加入载入子控件代码

- (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、运行代码,结果如下


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11664883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存