添加子视图后setNeedsDisplay无法正常工作

时间:2014-11-01 11:19:36

标签: ios objective-c iphone addsubview setneedsdisplay

我在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]。

知道如何逐个显示这些子视图吗?

1 个答案:

答案 0 :(得分: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];
                         }
         ];

    }
}