我從父視圖控制器呈現子視圖控制器用下面的代碼:如何讓子視圖控制器在橫向顯示時瞭解其框架?
self.childVC = [[ChildVC alloc] init];
[self addChildViewController:self.childVC];
self.childVC.view.frame = self.view.bounds;
self.childVC.alpha = 0.1;
[self.view addSubview:self.childVC.view];
[UIView
animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^(void) {
self.view.alpha = 1.0;
}
completion:^(BOOL finished) {
[self.childVC didMoveToParentViewController:self];
}
];
父視圖控制器支持所有方向。當提出的孩子,而父母是肖像方向,孩子的框架爲預期:
viewDidLoad: <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;
viewDidAppear: <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;
然而,當提交的孩子,而父母是景觀方向,孩子的框架奇怪:
viewDidLoad: <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;
viewDidAppear: <UIView: 0xeb9f70; frame = (0 0; 568 320); autoresize = W+H;
在viewDidLoad中,孩子認爲它的畫面是縱向的。然後它在viewDidAppear中糾正它自己。這種零星的框架變化使得孩子的動畫看起來很不自在。當兒童以橫向方向發射時,如何使框架既正確又一致?
如果你使用'initWithFrame:'怎麼辦? – nhgrif
我沒有明確使用'initWithFrame'。子視圖控制器使用'loadView'的默認實現,它應該爲我生成'self.view'。 – Pwner