我有一个必须按程序设置的视图,我将其命名为progView。
我想在故事板中直观地定义它的框架。我想到了一个解决办法-我将使用一个普通的视图,我将其命名为storyView,我向ViewController创建一个出口,然后执行如下操作:

@IBOutlet weak var storyView: UIView!

在viewDidLoad中:
let progView = ProgView(frame: storyView.frame)

这将导致progView不适合storyView。
我也试过了:
let progView = ProgView(frame: storyView.bounds)

但结果更糟。
有没有一种方法可以很容易地使一个视图与另一个视图完全相同?
如果我的问题漏掉了信息,请在评论中告诉我,我会尽力补充。

最佳答案

您应该尝试在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)
    }
}

10-08 12:14