0

我在 viewController.view 中添加了大约 500 个视图。这个动作在目标上花费了大约 5 秒。现在我希望在我添加的每个子视图之后刷新屏幕,这样用户会看到它们一一出现在屏幕上。

我在我的 viewController 中试过这个:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    for(int i=0; i<500; i++)
    {
        //...Create aView
        [self.view addsubview:aView];
        [self.view setNeedsDisplay];
    }
}

我运行它,5 秒钟内什么也没发生,然后所有视图立即出现。我确保从主线程上下文调用 [self.view setNeedsDisplay]。

知道如何让这些子视图一一出现吗?

4

1 回答 1

0

我找到了一个简单的解决方案。我向我的 viewController 添加了一个新属性 - 'subviewsCount' 女巫被初始化为 500。然后从 viewDidLoad 调用以下方法:

-(void) addSubviewsToMotherView
{
    self.subviewsCount -=1;
    if (self.subviewsCount >= 0)
    {
        [UIView animateWithDuration:0.0
                              delay:0.0
                            options:UIViewAnimationOptionLayoutSubviews
                         animations:^{
                             [self methodToAddSubview];
                         }
                         completion:^(BOOL finished){
                             [self addSubviewsToMotherView];
                         }
         ];

    }
}
于 2014-11-01T13:08:42.410 回答