使用Storyboard中的视图将其框架用于以编程方式设置的另一个视图

时间:2017-04-03 08:49:05

标签: swift xcode uiview frame

我有一个视图,我必须以编程方式设置,我将其命名为progView。 我希望在故事板中直观地定义其框架。我想到了一个解决方法 - 我将使用一个简单的视图,我将storyView命名为,我为ViewController创建一个插座并执行以下操作:

@IBOutlet weak var storyView: UIView!

并在viewDidLoad中:

let progView = ProgView(frame: storyView.frame)

这导致progView不适合storyView。 我也尝试过这个:

let progView = ProgView(frame: storyView.bounds)

但结果更糟。 有没有办法轻松地使视图与另一个视图完全匹配?

如果我的问题遗漏了信息,请在评论中说明,我会尽力添加。

1 个答案:

答案 0 :(得分:1)

您应该尝试在let progView = ProgView(frame: storyView.frame)内调用viewDidLayoutSubviews,因为在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)
    }
}