Iphone 重写内部UIViewController方法,因为某个内部方法给了我错误

Iphone 重写内部UIViewController方法,因为某个内部方法给了我错误,iphone,objective-c,cocoa-touch,ipad,uiviewcontroller,Iphone,Objective C,Cocoa Touch,Ipad,Uiviewcontroller,重写内部UIViewController方法的后果是什么 [UIViewController viewDidMoveToWindow:shouldApparOrdAppear:]给了我一些问题。它将我的框架调整为我有时不想要的值。我甚至不知道它从何处拾取新帧的值(它的大小接近于我添加它的superview的大小,但以2px为准)。参考: 我尝试在我的视图控制器中定义一个空的-(void)viewDidMoveToWindow:(UIWindow*)窗口shouldApparOrdAppear:(

重写内部UIViewController方法的后果是什么

[UIViewController viewDidMoveToWindow:shouldApparOrdAppear:]
给了我一些问题。它将我的框架调整为我有时不想要的值。我甚至不知道它从何处拾取新帧的值(它的大小接近于我添加它的superview的大小,但以2px为准)。参考:


我尝试在我的视图控制器中定义一个空的
-(void)viewDidMoveToWindow:(UIWindow*)窗口shouldApparOrdAppear:(BOOL)flag
方法。臭虫不见了 如果您重写该方法,您将面临被拒绝的风险,则该方法是未记录的。一种不违反规则的方法是重写视图控制器中视图的
setFrame:
方法

如果您认为这是一个bug,请将一个最小的测试用例放在一起,并将其提交到某个我们可以确切看到发生了什么的地方;框架可在两种情况下自动更改:

  • 视图控制器是视图控制器层次结构(导航或选项卡栏)的一部分。在这种情况下,您的父视图控制器可以随心所欲地处理视图框架
  • 您的视图允许自动调整大小,并且父视图会更改大小。这里需要注意的是,根视图的大小被更改以适应屏幕,从而导致所有子视图都自动调整大小

  • 要找到您案例中的确切罪魁祸首,您可以在覆盖的
    设置框架中设置一个断点:

    我主要关心的是应用程序拒绝。我将尝试设置帧覆盖方法。我仍然有兴趣知道为什么ViewDidMoveToWindows:ShouldApparOrdAppear:有时会尝试调整我的帧大小。我肯定会提交错误报告。我不知道为什么会发生这种情况。所讨论的视图不是直接添加到视图控制器继承权的视图,而是一个视图的子视图。也没有父视图更改大小。无论如何,我不确定这个问题是否仍然存在,这是在iOS 3.2中遇到的。@altealice我只是想在你的案例中找到确切的culrit,因为我自己也经历过奇怪(来自UINavigationController)。我不知道这在上一个iOS中是否已修复,但根据我使用UINavigationController的经验,如果您的视图有一个视图控制器(不管嵌入其他视图的深度),您可能会看到奇怪的帧变化。我明白了。谢谢分享你的发现。也许有一天我们可以发现它确实是固定的,或者至少可以找到发生这种情况时的确切情况。:)嗨,我也有同样的问题。你最终提交了一个bug吗?