我不知道怎麼問這個問題,但在這裏不用...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
方法,並且錯誤消失了。但是這看起來不像是一個修復程序,而是可能導致被拒絕的應用程序。 >。 <
任何有任何建議/意見的人?
是的,但它在導航欄下方多出了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
接受答案關閉此。實際修復在http://stackoverflow.com/questions/3708961/overriding-internal-uiviewcontroller-methods-because-an-internal-method-is-giving。 – Altealice 2010-10-08 06:45:45