iphone - 关于UITextView及其大小的问题

时间:2010-10-01 12:27:17

标签: 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

问题是:如果我将文本缩放到适合的范围并确实使文本大50%,那么文本如何不在textview中?

我错过了什么吗?似乎sizeWithFont没有正确计算大小。

感谢。

2 个答案:

答案 0 :(得分: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

否则,您使用的是字体大小而不是计算文本大小。

答案 1 :(得分:1)

TextView具有不随视图大小增长的填充。将固定数量添加到文本的计算大小就可以了。 像这样:

newSize.width = newSize.width + 20; 

20对你来说似乎是一个很好的数字,但你可以尝试调整它。