addSubview修改添加的视图的框架

时间:2010-09-13 15:15:05

标签: iphone objective-c cocoa-touch ipad uiviewcontroller

我不确定如何提出这个问题,但这里有......

我将PDF页面渲染到视图中并将其添加到UIViewController中。工作正常,除了一些PDF文件。

出于某种原因,代码会针对某些PDF文件执行不同的路径。从PowerPoint创建PDF时会发生这种情况。在addSubview调用之后,它会通过一条改变PDF视图框架的路径。我为PDFViewController.view.frame添加了一个观察者,跟踪如下:

0 -[PDFViewController observeValueForKeyPath:ofObject:change:context:]
1 NSKVONotify
2 -[NSKeyValueObservance observeValueForKeyPath:ofObject:change:context:]
3 NSKVONotify
4 -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:]
5 _NSSetRectValueAndNotify
6 -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]
7 -[UIView(Internal) _didMoveFromWindow:toWindow:]
8 -[UIView(Hierarchy) _postMovedFromSuperview:]
9 -[UIView(Internal) _addSubview:positioned:relativeTo:]
10 -[UIView(Hierarchy) addSubview:]
11 (rest of trace is expected)

对于大多数PDF文件,这都可以。但对于某些人来说,添加的视图框架会在[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]中的某处进行修改。原点的y坐标向下移动43个像素,高度降低约20%。我找不到有关该方法内部发生的任何信息,它似乎是UIViewController的内部信息。

任何人都知道为什么要修改框架?至少在正确的方向上轻推?

提前致谢。

编辑:

现在我很确定它是[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:]搞砸了。我在PDFViewController中实现了一个空的-viewDidMoveToWindow:(UIWindow *)shouldAppearOrDisappear:(BOOL)flag方法,并且bug消失了。但这似乎不是一个修复,但可能会导致被拒绝的应用程序。 >。<

任何有任何建议/意见的人?

1 个答案:

答案 0 :(得分:0)

43px是导航栏的大小。你有吗?

相关问题