ios - iOS UIView Transition subview 放错了片刻

标签 ios iphone cocoa-touch uiview uikit

我正在使用UIView过渡在ViewControllers之间进行转换。转换完成后,会出现明显的子视图放错位置,然后在短暂的延迟后得到纠正。

我录制了一个简短的视频片段来说明此问题:

https://drive.google.com/file/d/0B-iP0P7UfFj0dEE3OVN5Q3BTbUU/edit?usp=sharing

请注意滑块,以及按钮标题的潜在外观

这是进行过渡的辅助方法:

#define DURATION_TRANSITION 0.5

+ (void)toVCWithIdentifier:(NSString *)identifier transition:(Transition)transition {
    UIViewAnimationOptions option;
    if (transition == TransitionRootToSub) {
        option = UIViewAnimationOptionTransitionCurlUp;
    }
    else if (transition == TransitionSubToRoot) {
        option = UIViewAnimationOptionTransitionCurlDown;
    }
    else if (transition == TransitionPresent) {
        option = UIViewAnimationOptionTransitionFlipFromBottom;
    }
    else if (transition == TransitionDismiss) {
        option = UIViewAnimationOptionTransitionFlipFromTop;
    }
    else {
        option = UIViewAnimationOptionTransitionCrossDissolve;
    }
    [UIView transitionWithView:[Helper window] duration:DURATION_TRANSITION options:option animations:^{
        [Helper window].rootViewController = [Helper viewControllerWithStoryboardID:identifier];
    } completion:nil];

}



+ (UIViewController *)viewControllerWithStoryboardID:(NSString *)storyboardID {
    if (IS_IPHONE) {
        return [[UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:storyboardID];
    }
    else {
        return [[UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil] instantiateViewControllerWithIdentifier:storyboardID];
    }

}


我只是打电话要求进行过渡

#define VC_MORE @"MoreViewController" //story board identifier

- (IBAction)setting:(id)sender {
    [Helper toVCWithIdentifier:VC_MORE transition:TransitionRootToSub];
}


MoreViewController中,我称其为“ main”

#define VC_MAIN @"MainViewController"

- (IBAction)back:(id)sender {
    [Helper toVCWithIdentifier:VC_MAIN transition:TransitionSubToRoot];
}

最佳答案

在您的-toVCWithIdentifier方法中尝试
(只需将其放在过渡之外)

[Helper window].rootViewController = [Helper viewControllerWithStoryboardID:identifier];
[UIView transitionWithView:[Helper window] duration:DURATION_TRANSITION options:option animations:^{

} completion:nil];

关于ios - iOS UIView Transition subview 放错了片刻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754107/

相关文章:

ios - 如何通过 iOS 版 Facebook 应用程序使用 Facebook 登录

ios - iOS 中的自动旋转崩溃

ios - 使用照片框架从图库上传视频

iphone - 如何在 IOS 上运行的 phonegap/cordova 应用程序中打开 iframe?

iphone - 使用自定义 URL/协议(protocol)启动 MonoTouch iPhone 应用程序?

ios - CALayer 不透明度动画有效但边界动画无效

iphone - dataDetectorTypes 电话链接问题

ios - Obj-C 在主视图 Controller 中启动应用程序时崩溃

ios - 设置 AutoHideSplashScreen 在 Cordova 3.0.0 for iOS 中无效

ios - 处理 NSDateFormatter 区域设置 "feature"的最佳方法是什么?