首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController popViewControllerAnimated迟滞跃迁

UINavigationController popViewControllerAnimated迟滞跃迁
EN

Stack Overflow用户
提问于 2014-01-29 18:57:48
回答 4查看 1.7K关注 0票数 2

我有一个基于UINavigationController的应用程序,其中包含多个视图。

当我通过调用导航控制器上的下面的方法返回到以前的视图控制器时,我看到了一个缓慢的转换。我之所以能在我的视图控制器的viewWillAppear中想到它的唯一原因--我正在向它过渡--我正在做一些花费了一秒钟多一点时间的繁重工作。在这种情况下,有没有办法更快地过渡?

代码语言:javascript
复制
[self.navigationController popViewControllerAnimated:YES];

编辑:--几件重要的事情:

  1. 我在设备上运行。
  2. 我试着注释掉来自viewWillAppear的所有代码,但是我得到了相同的行为。
  3. 这种延迟只在iOS 7中观察到,在iOS 6中尝试过,在那里似乎工作得很好。
EN

回答 4

Stack Overflow用户

发布于 2015-08-12 08:26:44

我知道我也有点晚了,但我有一个非常类似的问题,我有一个标题图像占了整个宽度,当弹出它会对被弹出的视图造成令人讨厌的判断效果。

我的解决办法很简单。我只需要确保顶级视图裁剪其子视图。因为我的视图是在Interface中设计的,所以它只是一个选择外部视图容器(一个边框很厚)和检查“剪辑子视图”选项的问题。

票数 19
EN

Stack Overflow用户

发布于 2014-10-20 07:14:22

我可能会迟到,但对于来到这里的谷歌人来说:如果您在离开视图控制器时遇到了不稳定的用户体验,那么请尝试添加以下内容:

代码语言:javascript
复制
#import <QuartzCore/QuartzCore.h>
...
-(void)viewWillDisappear:(BOOL)animated{
    self.view.layer.shouldRasterize = YES;
    self.view.layer.rasterizationScale = [UIScreen mainScreen].scale;
}

它会使你的层变平,所以它更容易加工。

编辑:或者如果你真的绝望了:

代码语言:javascript
复制
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *fakeBackground = [[UIImageView alloc] initWithImage:snapshot];
[[self.view  subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.view addSubview:fakeBackground];
票数 2
EN

Stack Overflow用户

发布于 2014-01-29 19:06:58

两件事..。

1)你在使用模拟器吗?你在经营小牛吗?我升级的时候出现了严重的性能问题。

2)当涉及到视图控制器时.我尽量避免使用viewWillAppear。重写init函数,并在其中执行大部分初始化。那样的话,它就会开始得更早,不会在任何时候被调用。只有每次控制器出现时都需要调用的东西才应该放在那里,而该方法应该是精益的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21440131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档