gpt4 book ai didi

iOS 在设置自动布局使用 snapkit 后得到错误的框架

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:31 26 4
gpt4 key购买 nike

我在 UIStoryboard 中添加了一个 UIView,并将其绑定(bind)到一个名为 testView 的自定义 UIView 类,接下来,我在 require init 函数中的 textView 中创建了一个名为 subView 的 UIView,

这是我的脚步

1 初始化 subview

2 给textView添加新的subView

3 设置自动布局

4 设置cornerRadius (view.frame.height/2)

运行应用程序后角半径没有改变

然后我尝试打印 subView 的框架,它得到 (0,0,0,0)

这是我的代码

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

circelView = UIView()
self.addSubview(circelView)
circelView.snp_makeConstraints(closure: { (make) -> Void in
make.size.equalTo(80)
make.top.equalTo(self.snp_top)
make.right.equalTo(self.snp_right)
})
print(circelView.frame) //get wrong frame
circelView.layer.cornerRadius = circelView.frame.size.height / 2
circelView.layer.masksToBounds = true
}

最佳答案

在您打印框架和设置圆角半径时,您的 View 还没有时间布置。添加 AutoLayout 约束不会自动布局 View 。

要获得正确的结果,您需要在布局 View 后设置角半径。这将保证您拥有一个受自动版式约束约束的框架。

为此,将任何需要正确框架的代码放在“viewDidLayoutSubviews”中:

override func viewDidLayoutSubviews() {
print(circelView.frame) // The frame will have been set
circelView.layer.cornerRadius = circelView.frame.size.height / 2
}

viewDidLayoutSubviews()UIViewController 上的一个方法,您可以覆盖它,查看文档 here .

关于iOS 在设置自动布局使用 snapkit 后得到错误的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34199180/

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