【问题标题】:How to change the font size of text in UITextView dynamically in iPhone如何在 iPhone 中动态更改 UITextView 中文本的字体大小
【发布时间】: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。即每一行只有一个单词。

【问题讨论】:

    标签: iphone


    【解决方案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,还是只显示几个?
    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多