objective-c - 为什么 View 在自定义缩放和翻转动画后绘制在任务栏下方?

标签 objective-c ios cocoa-touch uinavigationcontroller core-animation

previous question 中的代码相同, 但不同的问题。

我创建了一个自定义动画来将 View Controller 添加到 UINavigationController。此代码将 View 缩放到原始大小的 80%,然后翻转它,然后再将其缩放回原始大小:

[UIView animateWithDuration:scaleDuration delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
    // Scale the controllers' views down.
    self.view.transform = CGAffineTransformScale(self.view.transform, 0.8, 0.8);
} completion:^(BOOL finished) {
    // Transition to the new view and push on the new view controller.
    [UIView transitionWithView:self.view duration:1 options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionTransitionFlipFromLeft animations:^{
        [self pushViewController:viewController animated:NO];
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:scaleDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:
^{
            // Scale back to the original size.
            self.view.transform = CGAffineTransformScale(self.view.transform, 1.25, 1.25);
        } completion:nil];
    }];
}];

问题是,当动画完成时,新 View 显示得非常好,只是它绘制在任务栏下方。也就是说,它在屏幕原点 0,0 而不是 0,20 处绘制。 “状态栏”选项在 IB 中设置(设置为“黑色”),自然地,如果我使用标准的 UINavigationController 推送动画,这不会发生,只有我的自定义动画。如果我在动画之后旋转设备,旋转重绘会将它移动到正确的位置。但是,我如何让它首先做到这一点呢?

作为一个额外的皱纹,如果我将 pushViewController:animated: 调用一行向下移动到 completion: block (尽管然后当然, View 似乎翻转到自身然后突然显示新 View )。

最佳答案

我发现到目前为止唯一的解决方法是隐藏导航栏然后再显示它。

设置转换后,添加以下两行:

[self setNavigationBarHidden:YES];
[self setNavigationBarHidden:NO];

它很丑但有效,我也在寻找更好的解决方案。

注意:layoutsubview,setNeedsLayout 是不行的。

关于objective-c - 为什么 View 在自定义缩放和翻转动画后绘制在任务栏下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731232/

相关文章:

objective-c - appendBezierPathWithGlyph 在 [NSBezierPath currentPoint] 中失败

objective-c - 以编程方式关闭 iOS

ios - 在 Swift 中从 viewController 的新实例调用时,performSegueWithIdentifier 不起作用

iphone - 我需要释放从 UIGraphicsGetCurrentContext() 返回的上下文吗?

ios - 子类化 UIViewController,何时以及何时不

objective-c - 将图像导出到 Instagram - iPhone

ios - 排除 UIKit 显示问题

ios - UITableViewController 返回到单元格中的下一个文本字段

android - 恢复应用内购买的安全问题

iphone - 如何在 IOS 开发中刷新 "socket mobile"扫描仪缓冲区?