打开模态时视图消失

时间:2013-01-12 00:07:35

标签: ios objective-c animation uiview modal-dialog

我的基本故事板包含一个带有一些标签的子视图来显示信息。当用户播放/暂停音乐时,该视图隐藏在屏幕外并弹出。此视图从底部的屏幕开始,并相应地设置动画。

屏幕上的另一个按钮打开一个模态窗口。打开此模式时,带有标签的子视图将在屏幕外返回其初始状态。我的主视图控制器中有通知中心成功检测到该模式何时关闭,但是如果正在播放音乐则调用适当的功能以再次显示子视图。但是,即使我在没有动画的情况下直接设置值,视图也不会出于某种原因设置动画。然而,在按下暂停/播放之后,它将再次显示为它应该的。

我假设我必须使用一些适当的回调,所以只有在视图准备好重绘之后才会调用动画?在下面找到打开我的模态的方法和关闭它时调用的方法。

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

0 个答案:

没有答案