【问题标题】:How to dynamically resize text size in a UITextView on iPhone 4S Swift如何在 iPhone 4S Swift 上的 UITextView 中动态调整文本大小
【发布时间】:2016-02-22 09:39:07
【问题描述】:

我的应用程序显示了一个字符串数组,该数组通过按下按钮进行迭代。它可以在除 iPhone 4S 之外的所有设备上完美运行。问题是一些字符串元素太长而无法放入 UITextView 中,您必须滚动才能阅读其余部分,这是我不想要的。

那么,我的问题是,当它不适合所有字符串元素时,如何动态缩小属性文本以适应受约束的 UITextView?

让我知道这是否可能, 谢谢各位。

【问题讨论】:

    标签: ios swift uitextview


    【解决方案1】:

    你为什么用UITextView,什么时候你可以用UILabel来适应你的情况。 UITextView 没有自动缩放属性。使用UILabel,您可以设置行数,它具有Autoshrinkproperty,您可以在其中设置Minimum font scaleMinimum font size,从而将您的文本相应地调整为UILabel 大小。或者只允许使用 UITextView 滚动。

    【讨论】:

    • 这些会为我节省很多时间。谢谢!
    • 这仍然没有抓住问题的重点,有很多正当理由使用UITextView 而不是UILabel
    【解决方案2】:

    在你的 textview 类别类中使用它来适应取决于宽度的字体大小。

    -(BOOL)sizeFontToFit:(NSString*)aString minSize:(float)aMinFontSize maxSize:(float)aMaxFontSize 
    {   
    float fudgeFactor = 16.0;
    float fontSize = aMaxFontSize;
    
    self.font = [self.font fontWithSize:fontSize];
    
    CGSize tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
    CGSize stringSize = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
    
    while (stringSize.height >= self.frame.size.height)
           {
           if (fontSize <= aMinFontSize) // it just won't fit
               return NO;
    
           fontSize -= 1.0;
           self.font = [self.font fontWithSize:fontSize];
           tallerSize = CGSizeMake(self.frame.size.width-fudgeFactor,kMaxFieldHeight);
           stringSize = [aString sizeWithFont:self.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
           }
    
    return YES; 
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多