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中的视图/图层设置边界和框架?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)