2010-09-14 27 views
2

覆盖内部UIViewController方法的后果是什么?覆盖内部UIViewController方法,因为内部方法给我错误

[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]是给我一些问题。它调整我的框架的值,我不想要有时。我甚至不知道它在哪里拾取新框架的值(它接近于我添加它的超级视图的大小,但是以2px偏移)。参考:this question, which I also need some help with.

我试图在我的视图控制器限定一个空的- (void)viewDidMoveToWindow:(UIWindow *)window shouldAppearOrDisappear:(BOOL)flag方法。错误消失了。 >。 <

有谁知道,如果重写-viewDidMoveToWindow:shouldAppearOrDisappear:是确定的呢?或者其他一些解决方法?

或者说,没有人知道什么时候,为什么-viewDidMoveToWindow:shouldAppearOrDisappear:喜欢改变我的帧尺寸有时

在此先感谢。

+0

嗨,我有同样的问题。你有没有最终提交了一个错误? – kelin 2014-09-08 14:12:39

回答

2

如果重写您运行的被拒的风险的方法,它是未公开。不违反规则的方法是重写视图控制器中视图的setFrame:方法。

如果您认为这是一个错误,那么将一个最小的测试用例组合起来并提交给http://bugreport.apple.com,并且可能将其上传到某处,我们就可以看到发生了什么。

+0

应用拒绝是我最关心的问题。我将尝试setFrame覆盖方法。 – Altealice 2010-09-14 12:59:00

+0

你真棒。谢谢! – Altealice 2010-09-14 13:54:58

+0

我仍然想知道为什么viewDidMoveToWindow:shouldAppearOrDisappear:有时会尝试调整我的框架的大小。 – Altealice 2010-09-14 13:56:14

2

对于你的问题的“为什么”部分;框架可在两种情况下自动改变:

  1. 你的ViewController是一个视图控制器层次结构(导航或的TabBar)的一部分。在这种情况下,您的父级ViewControllers按照您的视图框架进行操作。
  2. 您的视图允许自动调整大小,并且父视图更改大小。这里需要注意的是,根视图的大小被更改为适合屏幕,导致所有子视图都会发生自动大小调整。

要找到确切的罪魁祸首,您可以在重写的setFrame:中设置断点。

+0

有问题的视图不是直接添加到视图控制器的图层,而是一个子视图的子视图。没有父视图更改大小。无论如何,我不确定这个问题是否仍然存在,这是在iOS 3.2中遇到的。 – Altealice 2011-06-17 17:36:29

+2

@altealice我只是试图找到你的情况下的确切的罪魁祸首,因为我自己经历了怪事(来自UINavigationController)。我不知道这个问题在最后一个iOS中是否已修复,但根据我对UINavigationController的经验,如果您的视图具有视图控制器(无论在其他视图中嵌入的深度如何),则可能会出现奇怪的帧chnage。 – 2011-06-19 16:27:04

+0

我明白了。感谢您分享您的调查结果。也许有一天我们会发现它确实是固定的,或者至少在发生这种情况时找到确切的案例。 :) – Altealice 2011-06-22 11:54:27