如何在 iPhone 中动态更改 UITextView 中文本的字体大小
Posted
技术标签:
【中文标题】如何在 iPhone 中动态更改 UITextView 中文本的字体大小【英文标题】:How to change the font size of text in UITextView dynamically in iPhone 【发布时间】:2009-10-21 21:03:00 【问题描述】:我有一个固定大小的 UITextView 说宽度和高度为 150,150。
目的是展示当天的想法。请注意尺寸需要保持不变,我无法更改。
现在,思想串的长度随思想而变化。我想要做的是更改文本的字体大小,以确保它不会在 UITextView 中显示任何空白空间,如果长度很小,或者如果它更大,它不会显示滚动。
那么如何根据思想字符串的长度来改变UITextView的字体呢。
以下代码有什么问题:
CGSize size;
BOOL run=TRUE;
CGSize txtViewSize = self.txt_tipView.frame.size;
while(run)
size = [self.txt_tipView.text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize:txtViewSize lineBreakMode:UILineBreakModeWordWrap];
if((size.width<=txtViewSize.width) && (size.height<=txtViewSize.height))
run = FALSE;
else
currentSize--;
self.txt_tipView.font = [UIFont fontWithName:@"Helvetica" size:currentSize];//[UIFont boldSystemFontOfSize:12];
发生的情况是 TextView 中文本的大小始终为 60。即每一行只有一个单词。
【问题讨论】:
【参考方案1】:设置一个隐式字体大小,假设您可以使用的最大可接受字体。然后,使用以下方法测量您的文本大小:
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize: maxTextSize lineBreakMode:UILineBreakModeWordWrap];
如果您获得的大小超出可接受的范围,请调整字体大小并重复。 maxTextSize 应该是你的 UITextView 的大小。
【讨论】:
您能否在代码中添加更多细节。就像我需要做的那样。我正在按照 CGSize 大小的方式进行操作;布尔运行=真; CGSize txtViewSize = self.txt_tipView.frame.size; while(run) size = [self.txt_tipView.text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize:txtViewSize lineBreakMode:UILineBreakModeWordWrap]; if((size.width 我觉得不错。有什么问题吗? 如果使用 UITextView 无法解决问题,也许您应该使用 UILabel 对其进行测试...也就是说,如果您期望的唯一功能是 显示一天的想法。 是的,它没有更正大小,而是以 60 的字体大小结束,每行显示一个单词。 是显示了整个文本,还是被截断了?是每行都显示一个,字体为 60,还是只显示几个?以上是关于如何在 iPhone 中动态更改 UITextView 中文本的字体大小的主要内容,如果未能解决你的问题,请参考以下文章