gpt4 book ai didi

ios - 如何将自定义 XIB View 的位置和大小设置到主视图 Controller 中?

转载 作者:行者123 更新时间:2023-11-30 11:27:33 25 4
gpt4 key购买 nike

我使用 xib 制作了自定义 View 类并从 XIB 加载此 UIView 类。它显示了这个 xib,但没有设置 ViewController.swift 中 UIView 的高度和宽度。

Output

自定义 View .swift

class CustomView: UIView {

@IBOutlet weak var contentView: UIView!

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

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}

func setupView() {
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
self.addSubview(contentView)
}

}

CustomView.xib Image

ViewController.Swift

Class ViewController: UIViewController {
@IBOutlet weak var view1: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let customView = CustomView()
customView.frame = view1.frame
view1.addSubview(customView)
}
}

ViewController Image

最佳答案

我会在自定义 View 的初始化中采用一些不同的方法。这是代码:

自定义 View :

class CustomView: UIView {

@IBOutlet weak var contentView: UIView!

class func instanceFromNibWithFrame(_ frame: CGRect) -> UIView {
guard let view = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as ?UIView else {
fatalError("CustomView can't be init")
}
view.frame = frame
return view
}
}

View Controller :

class ViewController: UIViewController {
@IBOutlet weak var view1: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let customView = CustomView.instanceFromNibWithFrame(view1.bounds)
view1.addSubview(customView)
}
}

关于ios - 如何将自定义 XIB View 的位置和大小设置到主视图 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com