ios – 什么时候为Swift中的视图图层设置边界和框架?

ios – 什么时候为Swift中的视图图层设置边界和框架?,第1张

概述我在UIView子类中有这样的东西: override var bounds : CGRect { didSet { somelayer.frame = bounds }} 在相应的somelayer中,我有这个: override var bounds: CGRect { didSet { someFunction() }} 现在,如果使用super.init 我在UIVIEw子类中有这样的东西:

overrIDe var bounds : CGRect {  dIDSet {    somelayer.frame = bounds  }}

在相应的somelayer中,我有这个:

overrIDe var bounds: CGRect {  dIDSet {    someFunction()  }}

现在,如果使用super.init(frame:someFrame)初始化视图,则不会调用第一个块.这似乎表明bounds属性未设置在frame旁边.

如果我改变第一个块来覆盖var frame,那么它将由super.init(frame:someFrame)调用,它将设置somelayer的帧.有趣的是,当发生这种情况时,会调用第二个块,这表明边界和帧是同时设置的(这也是我所期望的).

我在这里错过了什么吗?

解决方法 初始化期间不调用 Property Observers.

willSet and dIDSet observers are not called when a property is first
initialized. They are only called when the property’s value is set
outsIDe of an initialization context.

也许是内部构造视图的方式,帧在初始化后设置,但边界不是.

然后,在设置图层框架时,边界也会通过内部方法更新.

总结

以上是内存溢出为你收集整理的ios – 什么时候为Swift中的视图/图层设置边界和框架?全部内容,希望文章能够帮你解决ios – 什么时候为Swift中的视图/图层设置边界和框架?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1072319.html

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

发表评论

登录后才能评论

评论列表(0条)

保存