等待UIView完成

时间:2013-11-27 12:36:27

标签: objective-c uiview ios7

[_articleTxtView setFont:[UIFont systemFontOfSize:_fontSizeInt]];
[_articleTxtView layoutIfNeeded];
[_articleTxtView sizeToFit];

通过按UIButton并负责更改UITextView的大小来触发上述代码。每次按下UIButton时,_fontSizeInt都会更改为更大的数字,UITextView高度会相应更改。

问题是在完成setFont之前会调用layoutIfNeededsizeToFit,并在中间切换UITextView

可能的解决方案:

这个解决方案效果很好,但我不会使用这种不好的做法。

..
    [_articleTxtView setFont:[UIFont systemFontOfSize:[DataManager sharedDataManager].fontSize]];        
    [self performSelector:@selector(test) withObject:nil afterDelay:0.01]; 
}

- (void)test
{
    [_articleTxtView layoutIfNeeded];
    [_articleTxtView sizeToFit];
}

我考虑使用下一个代码但由于某种原因它并不总是有用。此外,我不确定这是否正确使用动画块(实际上没有涉及动画):

[UIView animateWithDuration:0.4 animations:^()
     {
         [_articleTxtView setFont:[UIFont systemFontOfSize:[DataManager sharedDataManager].fontSize]];
     }
                     completion:^(BOOL finished)
     {
         [_articleTxtView layoutIfNeeded];
         [_articleTxtView sizeToFit];
     }];

当UIView完成绘画加载时,有没有更好的方法让方法“知道”?

由于

1 个答案:

答案 0 :(得分:0)

你可以在articleTxtView视图控制器类中实现viewDidLoad(一次调用)或viewWillAppear(每次都调用)