1

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

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

我假设我必须使用一些适当的回调,以便仅在视图准备好重绘后调用动画或其他什么?在下面找到打开我的模式的方法以及关闭时调用的方法。

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

0 回答 0