UIView drawRect 未在自动旋转时调用
Posted
技术标签:
【中文标题】UIView drawRect 未在自动旋转时调用【英文标题】:UIView drawRect not called on autorotate 【发布时间】:2012-11-19 21:34:08 【问题描述】:我有一个添加到视图控制器视图的自定义视图
[self.view addSubview:myView];
在我添加的视图中:
self.autoresizingMask = self.superview.autoresizingMask;
但是我的视图的 DrawRect 方法在自动旋转时没有被调用...为什么?我需要改变视图的边界,以便在自动旋转时重绘它......
【问题讨论】:
【参考方案1】:self.superview.autoresizingMask 的值是多少?这可能就是为什么什么都没有改变的原因。将自动调整掩码显式设置为您希望它执行的操作,或者如果这不能提供足够的控制,请使用 ViewController 的 willAnimationRotationToInterfaceOrientation 方法显式设置子视图的框架或在子视图上触发 setNeedsDisplay:。
【讨论】:
我能解决这个问题的唯一方法是在视图控制器中设置 autoresizeMask ......显然在新的 xcode 中你不能在 IB 中设置它......它只是说了一些关于“拥抱优先” ... 是的,那是新的 ios 6.0 自动布局的东西。您仍然可以在代码中设置自动调整大小的掩码。显然,ViewController 的视图上没有设置自动调整大小的掩码。只要有问题的视图控制器是根视图控制器,那么您的解决方案就不会影响任何东西,但更好的解决方案是直接在代码中设置子视图上的自动调整大小掩码,或者使用以下任一方法手动布局您的视图[UIViewController willAnimateRotationToInterfaceOrientation:duration:] 或 [UIViewController viewWillLayoutSubviews].以上是关于UIView drawRect 未在自动旋转时调用的主要内容,如果未能解决你的问题,请参考以下文章