ios masonry 约束之后怎么控件的拿到高度

ios masonry 约束之后怎么控件的拿到高度,第1张

setNeedsLayout:告知页面需要更新,但是不会立刻开始更新。执行后会立刻调用layoutSubviews。

layoutIfNeeded:告知页面布局立刻更新。所以一般都会和setNeedsLayout一起使用。如果希望立刻生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让动画生效。

layoutSubviews:系统重写布局

setNeedsUpdateConstraints:告知需要更新约束,但是不会立刻开始

updateConstraintsIfNeeded:告知立刻更新约束

updateConstraints:系统更新约束

这是因为约束被设置之后它并不会立即对view作出改变,而是要等到layout时,才会对视图的尺寸进行修改。而layout通常是在视图已经加载到父视上时。所以我们如果在viewDidLoad中设置了约束,要等到viewDidAppear时view的尺寸才会真正改变。

一个很好的解决办法是:把frame设置写到layoutSubviews中或者写到viewDidLayoutSubviews中即可。因为约束生效时view的center或者bounds就会被修改,center或者bounds被修改时layoutSubview,就会被调用,随后viewDidLayoutSubviews就回被调用。这个时候,设置约束的视图frame就不再是(0,0,0,0)了

当一个UI文件需要适应不同的frame时,可以采用以下方法:

1 使用Auto Layout或者Stack View。这样可以创建一个基于约束条件的自动布局方式,使得界面元素可以根据不同的frame自适应调整。

2 使用Size Classes。Size Classes是iOS中一种灵活的布局方式,可以基于设备横向和纵向的尺寸变化来调整UI的布局。

3 使用代码动态计算布局。在某些情况下,可能需要根据具体的需求编写代码动态计算UI布局,以便使UI文件适应不同的frame。

无论采用哪种方法,都需要仔细考虑UI的布局和显示效果,并对不同的情况做出相应的调整,以确保最终的UI展示效果满足用户需求。

以上就是关于ios masonry 约束之后怎么控件的拿到高度全部的内容,包括:ios masonry 约束之后怎么控件的拿到高度、Masonry拓展-AutoLayout与Frame的纠缠、qt不同的ui文件自适应frame等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9283304.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存