开发环境 Swift2.3 XCode8.2
因为开发一个自定义控件,需要动态的读取ScrollView的frame,但是,读取出来的数值一直是在storyboard中的大小(storyboard设计时的大小),因为设计的时候基于Iphone6s,宽度为375,所以,插件里读取的一直都是375,但是Iphone7Plus的实际宽度是414。而scrollView实际是添加了宽度约束等于superView的,也就是说,实际值应该是414。
问题出现在哪里呢??
override func viewDidLoad() {
// 控件的调用
self.scrollView.doSoming()
}
问题应该就出现在这里,方法的调用应该放在viewDidAppear
中,因为当视图还未加载的时候,约束是不会被计算的,而值就理所当然的是设计时候的值。
当然,如果在viewDidAppear
中调用,要注意调用次数,非常有可能被多次调用。