当设备方向改变时导致子视图重绘的正确方法是啥?
Posted
技术标签:
【中文标题】当设备方向改变时导致子视图重绘的正确方法是啥?【英文标题】:what's the right way to cause a subview to redraw when the device orientation changes?当设备方向改变时导致子视图重绘的正确方法是什么? 【发布时间】:2010-12-31 03:03:24 【问题描述】:我有一个带有一个视图和一个子视图的视图控制器。当设备方向更改时,视图会自动重绘,但子视图不会。如果我明确地执行 [subview setNeedsDisplay] 它会重绘,但我没有一个合乎逻辑的位置来将该调用放入我的代码中。而且,由于我不必明确告诉视图重绘,所以告诉子视图重绘似乎违反直觉。有没有办法让子视图在视图重绘时自动重绘?
【问题讨论】:
【参考方案1】:我发现以下工作。如果这不是最好的方法,请提供更好的方法。
在subview.m
文件中的initWithFrame:
方法中包含以下内容
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.contentMode = UIViewContentModeRedraw;
尽管这很有效并且非常适合我的代码,但我不明白为什么子视图需要设置这些属性而视图不需要。
【讨论】:
【参考方案2】:Swift 3/ios10 语法:
self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.contentMode = .redraw
【讨论】:
这很有效,但是如果有人能解释为什么会很棒。以上是关于当设备方向改变时导致子视图重绘的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章