2010-10-01 29 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