2013-11-27 227 views
0
[_articleTxtView setFont:[UIFont systemFontOfSize:_fontSizeInt]]; 
[_articleTxtView layoutIfNeeded]; 
[_articleTxtView sizeToFit]; 

上述代碼是通過按下UIButton觸發的,並負責更改UITextView的大小。每次按下UIButton時,_fontSizeInt都會更改爲更大的數字,並且UITextView高度會相應更改。等待UIView完成

問題是layoutIfNeededsizeToFit在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畫完\加載?

感謝

回答

0

你可以在articleTxtView視圖控制器類

+0

articleTxtView實現viewDidLoad中(稱爲一次)或viewWillAppear中(稱爲每次)是一個UIView,和viewDidLoad中是一個UIView控制器方法。另外,viewDidLoad只被調用一次。爲什麼/這將如何工作? –

+0

對,我的意思是它的視圖控制器。 嘗試viewDidAppear然後,它被稱爲每次視圖(所以文本視圖)出現 (答案編輯)這是否有幫助? –