如何在 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 中文本的字体大小的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 iPhone 中处理动态 Web 服务?

在 iPhone 中动态更改 UITableviewCell 高度?

如何根据前景图像在android中动态更改状态栏的颜色?

在 iOS 中动态更改启动图像

如何在 iPhone 模拟器中更改时间和时区?

如何在iphone中以编程方式更改按钮文本