IOS开发之读取使用AutoLayout约束的控件Frame

开发环境 Swift2.3 XCode8.2

因为开发一个自定义控件,需要动态的读取ScrollView的frame,但是,读取出来的数值一直是在storyboard中的大小(storyboard设计时的大小),因为设计的时候基于Iphone6s,宽度为375,所以,插件里读取的一直都是375,但是Iphone7Plus的实际宽度是414。而scrollView实际是添加了宽度约束等于superView的,也就是说,实际值应该是414。

问题出现在哪里呢??

override func viewDidLoad() {
    // 控件的调用
    self.scrollView.doSoming()
}

问题应该就出现在这里,方法的调用应该放在viewDidAppear中,因为当视图还未加载的时候,约束是不会被计算的,而值就理所当然的是设计时候的值。

当然,如果在viewDidAppear中调用,要注意调用次数,非常有可能被多次调用。

你可能感兴趣的:(IOS,swift)