2010-10-01 30 views
0

我有一個應該有一行文本的UITextView。iphone - 關於UITextView及其大小的問題

尺寸字體由滑塊控制。當用戶控制滑塊時,我使用(這是滑塊在移動時調用的方法)計算新的UITextView大小。

- (void) changeFontSize:(id)sender { 
    UISlider *slider = (UISlider *)sender; 
    CGFloat newSize = (CGFloat)[slider value]; 

    myTextView.font = [UIFont boldSystemFontOfSize:newSize]; 
    [self adjustBoxforSize:myTextView.text]; 
} 

- (void) adjustBoxForSize:(NSString*)myText { 

    CGFloat fontSize = myTextView.font.pointSize; 

    CGSize newSize = 
     [myText sizeWithFont:[UIFont boldSystemFontOfSize:fontSize]]; 
    newSize.width = newSize.width * 1.5; // make it 50% larger 
    newSize.height = newSize.height * 1.5; // make it 50% taller 
    CGRect myFrame = CGRectMake(0.0f, 0.0f, newSize.width, newSize.height); 
    myTextView.frame = myFrame; 
} 

如果我縮小字體,這是結果

alt text

的問題是:如何可以將文本走出的TextView的,如果我縮放到適合確實使它大50%?

我錯過了什麼?看來,sizeWithFont不正確計算大小。

謝謝。

回答

1

TextView具有不隨視圖大小增長的填充。在文本的計算大小上添加一個固定的數值就可以實現。 事情是這樣的:

newSize.width = newSize.width + 20; 

20似乎對你情況好一些,但你可以嘗試調整它。

1

也許我錯了,但這樣的:

newSize.width = fontSize.width * 1.5; // make it 50% larger 
newSize.height = fontSize.height * 1.5; // make it 50% taller 

不應該是這樣嗎?

newSize.width = newSize.width * 1.5; // make it 50% larger 
newSize.height = newSize.height * 1.5; // make it 50% taller 

否則,您正在使用字體大小而不是計算的文本大小。

+0

對不起。當我將應用程序中的代碼複製到這裏時(我不得不簡化它,並弄錯了),這是一個錯字。我已經糾正了這個問題。 – SpaceDog 2010-10-01 18:40:14

+1

試試這個:newSize.width = newSize.width + 20;看起來填充不會隨字體大小增長。 – MaxFish 2010-10-01 19:04:37

+0

這似乎解決了一個問題。按百分比做並不好,因爲當字體很小的時候你會有小的增加,但是用一個固定的數量來做就可以了。請重複您的評論作爲答案,以便我可以接受。謝謝! – SpaceDog 2010-10-02 16:28:38