私は2つのビューコントローラーを持っています。そのうちの1つはもう1つのサブビューです。両方のビューは、ペン先を介してロードされます。viewDidLoad
サブビューコントローラには、親ビューコントローラの位置が設定されています。親ViewControllerがUIWindowのルートViewControllerとして設定されている場合、SubViewControllerのビューの位置をにリセットします{0.0, 0.0}
。
サブビューコントローラーのビューのフレームを監視し、ブレークポイントを追加したため、これがウィンドウであることがわかります(オブザーバーは親ビューコントローラーです)。スタックトレースは次のように報告します。
#0 0x000d34e0 in -[ParentViewController observeValueForKeyPath:ofObject:change:context:]
#1 0x32866eb0 in NSKeyValueNotifyObserver ()
#2 0x32866b0a in NSKeyValueDidChange ()
#3 0x32840eca in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] ()
#4 0x39b87d9e in -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] ()
#5 0x39b4075e in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#6 0x39b405be in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
#7 0x39b3ae4a in -[UIView(Hierarchy) _postMovedFromSuperview:] ()
#8 0x39b227dc in -[UIView(Internal) _addSubview:positioned:relativeTo:] ()
#9 0x39b222c2 in -[UIView(Hierarchy) addSubview:] ()
#10 0x39b7fe42 in -[UIWindow addRootViewControllerViewIfPossible] ()
#11 0x39b7bae4 in -[UIWindow _setHidden:forced:] ()
位置を設定するつもりがない場合は、viewDidLoad
どこに設定するのですか?
更新:
位置が変わっただけだと思いましたが、同じパスで寸法が設定されています。ペン先では、横向きの寸法に設定されていますが、フレームはで縦向きの寸法に設定されてい{0.0, 0.0}
ます。