0
[_articleTxtView setFont:[UIFont systemFontOfSize:_fontSizeInt]];
[_articleTxtView layoutIfNeeded];
[_articleTxtView sizeToFit];
上述代碼是通過按下UIButton觸發的,並負責更改UITextView的大小。每次按下UIButton時,_fontSizeInt都會更改爲更大的數字,並且UITextView
高度會相應更改。等待UIView完成
問題是layoutIfNeeded
和sizeToFit
在setFont完成之前調用並在中間切割UITextView
。
可能的解決方案:
這個解決方案的偉大工程,但我不使用的東西這樣的壞習慣preffer。
..
[_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畫完\加載?
感謝
articleTxtView實現viewDidLoad中(稱爲一次)或viewWillAppear中(稱爲每次)是一個UIView,和viewDidLoad中是一個UIView控制器方法。另外,viewDidLoad只被調用一次。爲什麼/這將如何工作? –
對,我的意思是它的視圖控制器。 嘗試viewDidAppear然後,它被稱爲每次視圖(所以文本視圖)出現 (答案編輯)這是否有幫助? –