我正在尝试调整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]];
然而,这是我得到的:
我尝试了不同的换行模式,并将autoresize设置为none,但它没有帮助。有什么想法吗?
答案 0 :(得分:1)
由于您正在使用,您的while循环将无法执行您想要的操作
storyTitleSize.height
确定框架的大小,这不会考虑文本的环绕效果。一个建议是截断字符串,只显示标题的一定数量的字符。否则,您将需要根据帧的宽度和字符串的长度计算您将拥有多少个换行符,并使用
while(storyTitleSize.height * numLineBreaks >= self.newsFeedStoryTitle_.frameHeight)
{
...
}
希望有所帮助。
您还可以动态调整框架(UITextView)的大小,如thread
答案 1 :(得分:0)
试试这些代码
while (self.textView.contentSize.height >= frameHeight){
currentFontSize--;
currentFont = [UIFont fontWithName:kProximaNovaBold size:currentFontSize];
[self.textView setFont:currentFont];
self.textView.text = @"your string";
}