gpt4 book ai didi

ios - 如何让 subview Controller 在横向呈现时理解其框架?

转载 作者:行者123 更新时间:2023-12-01 16:45:12 25 4
gpt4 key购买 nike

我正在使用以下代码从父 View Controller 呈现 subview Controller :

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];
}
];

父 View Controller 支持所有方向。当 parent 在 中时出现 child 时肖像 方向, child 的框架如预期:
viewDidLoad:   <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;
viewDidAppear: <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;

但是,当 parent 在 中时出现 child 时景观 方位, child 的框架很奇怪:
viewDidLoad:   <UIView: 0xeb9f70; frame = (0 0; 320 568); autoresize = W+H;
viewDidAppear: <UIView: 0xeb9f70; frame = (0 0; 568 320); autoresize = W+H;

在 viewDidLoad 中, child 认为它的框架是纵向的。然后它在 viewDidAppear 中进行自我纠正。这种帧的零星变化使 child 的动画看起来很烦躁。当 child 以横向启动时,如何使框架既正确又一致?

最佳答案

viewDidLoad当所有元素都已加载时,表示处于原始状态的 View 。布局尚未开始。如果您的 View Controller 是在 Storyboard 或 Nib 中定义的,则它将具有从解码器中读取的值。你不应该从那里开始你的动画,而是在 viewWillAppear ,应该在 View 布局后调用( viewDidLayout )。

关于ios - 如何让 subview Controller 在横向呈现时理解其框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com