使用情节提要中的视图将其框架用于以编程方式设置的另一个视图
Using a view from Storyboard to use its frame for another view that is set programatically
我有一个必须以编程方式设置的视图,我将其命名为 progView。
我想在故事板中直观地定义它的框架。我想到了一个解决方法——我将使用一个简单的视图,我将其命名为 storyView,我为 ViewController 创建了一个出口并执行如下操作:
@IBOutlet weak var storyView: UIView!
并在 viewDidLoad 中:
let progView = ProgView(frame: storyView.frame)
这导致 progView 不适合 storyView。
我也试过这个:
let progView = ProgView(frame: storyView.bounds)
但结果更糟。
有没有办法轻松地使一个视图与另一个视图完全一样?
如果我的问题遗漏了信息,请在评论中指出,我会尽力补充。
您应该尝试在 viewDidLayoutSubviews
中调用 let progView = ProgView(frame: storyView.frame)
,因为在 viewDidLoad
中视图尚未布局
private var didLayoutSubview = false //to call this once, because theoretically viewDidLayoutSubviews can be called multiple times
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if !self.didLayoutSubiviews {
self.didLayoutSubiviews = true
let progView = ProgView(frame: storyView.frame)
}
}
我有一个必须以编程方式设置的视图,我将其命名为 progView。 我想在故事板中直观地定义它的框架。我想到了一个解决方法——我将使用一个简单的视图,我将其命名为 storyView,我为 ViewController 创建了一个出口并执行如下操作:
@IBOutlet weak var storyView: UIView!
并在 viewDidLoad 中:
let progView = ProgView(frame: storyView.frame)
这导致 progView 不适合 storyView。 我也试过这个:
let progView = ProgView(frame: storyView.bounds)
但结果更糟。 有没有办法轻松地使一个视图与另一个视图完全一样?
如果我的问题遗漏了信息,请在评论中指出,我会尽力补充。
您应该尝试在 viewDidLayoutSubviews
中调用 let progView = ProgView(frame: storyView.frame)
,因为在 viewDidLoad
中视图尚未布局
private var didLayoutSubview = false //to call this once, because theoretically viewDidLayoutSubviews can be called multiple times
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if !self.didLayoutSubiviews {
self.didLayoutSubiviews = true
let progView = ProgView(frame: storyView.frame)
}
}