小编Mic*_*chi的帖子

iOS 8 - 在设置关键窗口后快速显示视图控制器或解除并立即显示另一个视图控制器时出现故障

自从在iOS 8上测试我的应用程序以来,我发现一个关于视图控制器初始化和演示的工作真的很慢.

我曾经在iOS 6和7上使用类似的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ....

    [self.window setRootViewController:_rootController];
    [self.window makeKeyAndVisible];

    // Conditions

    if (#first launch condition#) {
        // quite small controller containing Welcome showcase
        WelcomeViewController *w = ....
        [_rootViewController presentViewController:w animated:NO];
    }

    else if (#last opened item condition#) {
        // pretty big container, root view controller contains
        // a grid view which opens Item detail container the same way
        ItemDetailController *item = ....
        [_rootViewController presentViewController:item animated:NO];
    }

}
Run Code Online (Sandbox Code Playgroud)

在iOS 8中,这变成了一个非常缓慢的地狱.根视图控制器现在可以看到0.5-1秒,然后立即重新绘制屏幕.此外,演示文稿的缓慢开始引起Unbalanced calls to begin/end appearance …

uiviewcontroller ios presentviewcontroller

13
推荐指数
1
解决办法
1933
查看次数

iOS –切换UIWindow时的解除分配问题

我使用上下文UIWindow在我的应用程序中切换key ,以提供更简洁的流程-欢迎窗口=>具有项目列表的主屏幕<=>带有汉堡菜单和物品的项目容器。

函数示例如下:

- (void)updateKeyWindow:(UIWindow *)window withTransition:(WindowTransition)transition
{
    UIWindow *originalWindow = _keyWindow;
    _keyWindow = window;

    window.alpha = 0;
    [originalWindow resignKeyWindow];
    [originalWindow resignFirstResponder];
    originalWindow.userInteractionEnabled = NO;
    [window makeKeyAndVisible];
    window.transform = (transition == WindowTransitionFlyDown) ? CGAffineTransformMakeScale(1.02, 1.02) :
                       (transition == WindowTransitionFlyUp)   ? CGAffineTransformMakeScale(.96, .96) :
                                                                 CGAffineTransformIdentity;

//  [UIView animateWithDuration:.24 animations:^{

        window.alpha = 1;
        originalWindow.alpha = 0;
        window.transform = CGAffineTransformIdentity;
        originalWindow.transform = (transition == WindowTransitionFlyDown) ? CGAffineTransformMakeScale(.96, .96) :
                                   (transition == WindowTransitionFlyUp)   ? CGAffineTransformMakeScale(1.02, 1.02) :
                                                                             CGAffineTransformIdentity;

//  } completion:^(BOOL b){ …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiwindow ios

5
推荐指数
1
解决办法
661
查看次数