首先,我真的要感谢构建了snapkit的家伙。它确实使设置UIViews约束变得非常容易。
但是现在,我有一个简单的问题:如何访问使用此库设置的视图的frame属性?
例如:
self.view.addSubview(contributePosterView)
self.contributePosterView.snp.makeConstraints { (make) in
make.left.equalTo(self.view.snp.left)
make.width.equalTo(self.view.bounds.width)
make.top.equalTo(self.table.snp.bottom)
make.bottom.equalTo(self.view.snp.bottom)
}
如何访问名为contributePosterView
的视图的frame属性?
这对我很重要,特别是当我必须使用上述滚动视图的layoutSubviews属性在UIScrollview
中进行设置时。
我尽我所能检查了snapkit文档,但仍未找到答案。
我应该怎么做?任何帮助将不胜感激。
答案 0 :(得分:1)
“ SnapKit”提供了添加约束的方法,该方法使用的语法比许多人常用的NSLayoutContraint
方法容易得多。但是,它对视图没有任何作用,因此无法获得最终的帧大小。
问题在于您可能会在viewDidLoad()
中进行“快照”调用,然后立即尝试获取该帧。到那时,所有发生的事情就是已经添加了约束,但是自动布局尚未完成其工作。
您要覆盖viewDidLayoutSubviews()
,此时可以获取有效的帧大小:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// now you can get the resulting frame
let f = self.contributePosterView.frame
// do what you want with the frame
}