2010-09-13 25 views
5

我不知道怎麼問這個問題,但在這裏不用...addSubview修改所添加的視圖的框架

我渲染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方法,並且錯誤消失了。但是這看起來不像是一個修復程序,而是可能導致被拒絕的應用程序。 >。 <

任何有任何建議/意見的人?

回答

0

43px是導航欄的大小。你有嗎?

+0

是的,但它在導航欄下方多出了43px。此外,是不是導航欄高度44px而不是43px?無論如何,這個問題的解決方法是在這裏找到 - > http://stackoverflow.com/questions/3708961/overriding-internal-uiviewcontroller-methods-because-an-internal-method-is-giving – Altealice 2010-09-15 05:16:38

+0

接受答案關閉此。實際修復在http://stackoverflow.com/questions/3708961/overriding-internal-uiviewcontroller-methods-because-an-internal-method-is-giving。 – Altealice 2010-10-08 06:45:45