我的基本故事板包含一个带有一些标签的子视图来显示信息。当用户播放/暂停音乐时,该视图隐藏在屏幕外并弹出。此视图从底部的屏幕开始,并相应地设置动画。
屏幕上的另一个按钮打开一个模态窗口。打开此模式时,带有标签的子视图将在屏幕外返回其初始状态。我的主视图控制器中有通知中心成功检测到该模式何时关闭,但是如果正在播放音乐则调用适当的功能以再次显示子视图。但是,即使我在没有动画的情况下直接设置值,视图也不会出于某种原因设置动画。然而,在按下暂停/播放之后,它将再次显示为它应该的。
我假设我必须使用一些适当的回调,所以只有在视图准备好重绘之后才会调用动画?在下面找到打开我的模态的方法和关闭它时调用的方法。
// open modal from a .xib
- (IBAction)openModal:(id)sender {
ifmSettingsViewController* svc = [[ifmSettingsViewController alloc] initWithNibName:@"Settings" bundle:nil];
[svc setModalPresentationStyle:UIModalPresentationFullScreen];
[svc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didDismissSecondViewController)
name:@"SecondViewControllerDismissed"
object:nil];
[self presentViewController:svc animated:TRUE completion:nil];
}
// called when modal window dismissed
-(void)didDismissSecondViewController {
NSLog(@"Dismissed SecondViewController");
[self viewDidAppear:TRUE];
// calculate appropriate distance from screen bottom
float yer = [[UIScreen mainScreen] bounds].size.height - 101.0;
self.infoview.center = yer;
}
在模态中,它自行关闭如下:
- (IBAction)backHit:(id)sender {
[self dismissViewControllerAnimated:TRUE completion:^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"SecondViewControllerDismissed"
object:nil
userInfo:nil
];
return;
}];
}