gpt4 book ai didi

ios - 如何获取已通过 snapkit 设置的 UIView 的框架

转载 作者:行者123 更新时间:2023-11-28 13:45:11 25 4
gpt4 key购买 nike

首先,我真的要感谢构建 snapkit 的人。它确实使为 UIViews 设置约束变得非常容易。

但现在,我有一个简单的问题:如何访问使用此库设置的 View 的 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 的 View 的 frame 属性?

这对我来说很重要,尤其是当我必须使用所述 ScrollView 的 layoutSubviews 属性在 UIScrollview 中设置它们时。

我尽可能多地检查了 snapkit 文档,但仍然没有找到答案。

我该怎么办?任何帮助将不胜感激。

最佳答案

“SnapKit”提供了添加约束的方法,使用许多人认为比默认的 NSLayoutContraint 方法更简单的语法。但是,它不会对 View 执行任何操作以致无法获得结果帧的大小。

问题是您可能在 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
}

关于ios - 如何获取已通过 snapkit 设置的 UIView 的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com