繁体   English   中英

最初将UIView添加为子视图很慢

[英]Adding a `UIView` as a subview is initially slow

在名为MainViewController UIViewController ,我引用了另一个名为SubViewController UIViewController 定义如下:

@class SubViewController;

@interface MainViewController : UIViewController <UIScrollViewDelegate> {
  SubViewController * _subViewController;
}

MainViewControllerinitWithNibName:bundle:方法中,我按以下方式初始化SubViewController

#pragma mark - Init

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; {
  if((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])){
    _subViewController = [[SubViewController alloc] initWithNibName:@"SubViewController" bundle:nil[;

    // Forces the view to load, in an attempt to speed up the adding of the subview.
    UIView * view = _subViewController.view;
    view.alpha = 1.0f;
  }
  return self;
}

SubViewControllerviewDidLoad方法确实被调用,并且似乎所有内容SubViewController加载,但是当我将SubViewController添加为子视图时:

- (IBAction)showButtonPressed:(UIButton *)aButton; {
  [self.view addSubview:_subViewController.view];
}

该应用程序减慢了几秒钟的时间,然后添加了子视图,一切都很好。 奇怪的是,当我删除子视图并尝试重新添加它时, 没有延迟

我认为这个问题正在解决,但我找不到有关如何解决此问题的任何文档。

谁能解释造成这种速度下降的原因是什么? 谢谢!

您的代码不完整!

我尝试使用您的代码并创建新项目-ARC-,而它对我而言却丝毫不拖延,尝试使用Instruments查找发生的事情

我从来没有那样的问题。 因为您说的是如果不加载第二个视图,则它的运行速度更快。 检查以查看secondViewController的viewWillAppear和viewDidAppear中的内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM