gpt4 book ai didi

ios - UIView - 什么覆盖将允许更新 UIView 框架

转载 作者:行者123 更新时间:2023-11-29 05:27:53 25 4
gpt4 key购买 nike

我有一个 UIView .xib,并且正在对 UIView 进行子类化。当我加载 Nib 时,将设置 View 的框架并调用 awakeFromNib()。

我有 3 个按钮。当我加载 View 时,我为每个按钮传递回调。如果一个或多个回调为零,则我隐藏按钮并调整 View 大小:

let viewSize = 50
var adjustedSize = 0
if (self.option2String == nil){
self.option2View.isHidden = true
adjustedSize -= viewSize
}
if (self.option3String == nil){
self.option3View.isHidden = true
adjustedSize -= viewSize
}
let _size = self.innerView.frame.size
let size = CGSize(width: _size.width, height: _size.height + CGFloat(adjustedSize))
self.innerView.frame = CGRect(origin: self.innerView.frame.origin, size: size)

我尝试将此代码放入 awakeFromNib() 和 didMoveToSuperview() 中,但框架没有改变大小。

如果我将最后一行包含在 DispatchQueue.main.async 中,那么它就可以工作。但我担心这只是时间上的运气。

这是最佳实践吗?在哪里可以从 UIView 子类中调整 View 大小?

编辑:已确认,DispatchQueue.main.async 只是运气。它只有 50% 的时间有效。

最佳答案

将 View 放在 UIViewController 中,调用一个在 Controller 的 viewDidLayoutSubviews() 中调整 View 大小的函数

override func viewDidLayoutSubviews() {
myView.resize()
}

关于ios - UIView - 什么覆盖将允许更新 UIView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979509/

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