0

我正在尝试调整 UITextView 中文本的大小以使其适合。我有以下代码:

NSString *storyTitle = [newsfeedToSubject.properties valueForKey:@"title"];

    int currentFontSize = 18;
    UIFont *currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize];
    CGSize storyTitleSize = [storyTitle sizeWithFont:currentFont constrainedToSize:self.newsfeedStoryTitle_.frameSize lineBreakMode:UILineBreakModeWordWrap];

    while (storyTitleSize.height >= self.newsfeedStoryTitle_.frameHeight){
        currentFontSize--;
        currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize];
        storyTitleSize = [storyTitle sizeWithFont:currentFont constrainedToSize:self.newsfeedStoryTitle_.frameSize lineBreakMode:UILineBreakModeWordWrap];
    }

    [self.newsfeedStoryTitle_ setFont:currentFont];
    [self.newsfeedStoryTitle_ setText:storyTitle];
    [self.newsfeedStoryTitle_ setBackgroundColor:[UIColor redColor]];

但是,这就是我得到的:

在此处输入图像描述

我尝试了不同的换行模式并将自动调整大小设置为无,但它没有帮助。任何的想法?

4

2 回答 2

1

您的 while 循环不会执行您想要的操作,因为您使用 storyTitleSize.height 的是确定框架的大小,这不会考虑文本的环绕效果。一种建议是截断字符串并仅显示一定数量的标题字符。否则,您将需要根据框架的宽度和字符串的长度计算将有多少换行符,并使用

while(storyTitleSize.height * numLineBreaks >= self.newsFeedStoryTitle_.frameHeight)
{
    ...
}

希望有帮助。

您还可以在此线程中动态调整框架(UITextView)的大小

于 2012-07-31T18:08:49.153 回答
0

试试这些代码

while (self.textView.contentSize.height >= frameHeight){
    currentFontSize--;
    currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize];
    [self.textView setFont:currentFont];
    self.textView.text = @"your string";
}
于 2012-07-31T18:08:55.043 回答