【问题标题】:UITextView how to cut off textUITextView如何截断文字
【发布时间】:2011-06-22 22:38:41
【问题描述】:

我有一个 UITextView 显示从 Facebook Connect 加载的 facebook 状态。我正在尝试使 UITextView 只是创建文本的预览。当 UILabel 的文本过多时,我希望它看起来像它。它会像“文本太多......”带有点,但 UITextViews 不这样做。有人知道如何让它工作吗?

【问题讨论】:

    标签: iphone uitextview uilabel


    【解决方案1】:

    编写一个单独的方法来计算字符串中有多少个字母,如果超过某个预设值,则将其剪切并在末尾附加三个点。

    此外,如果您不需要编辑内部信息,请考虑使用 UILabel 而不是 UITextView,因为 UITextView 需要更长的时间来分配和初始化,并且通常比 UILabel 慢。

    【讨论】:

      【解决方案2】:
      +(NSString *)getTruncatedTextForString:(NSString *)inputString withFont:(UIFont *)font withLength:(int)textViewlength 
      {
      
          CGSize dotSize=[@"..." sizeWithFont:font];
          float dotWidth=dotSize.width;
          NSString *outputString=@"";
      
          int reqLength=textViewlength-dotWidth;
      
          for(int i=0;i<inputString.length;i++) 
          {
      
              NSString *tempStr=[outputString stringByAppendingString:[inputString substringWithRange:NSMakeRange(i,1)]];
      
              if([tempStr sizeWithFont:font].width>reqLength)
              {
                  break;
              }
              else 
              {
                  outputString=tempStr;
              }
          }
          NSString *tempStr=[outputString stringByAppendingString:@"..."];
          outputString=tempStr;
          return outputString; 
      }
      

      【讨论】:

        【解决方案3】:

        试试下面的代码。它将在文本视图中显示两个点,其文本超过其框架高度。

        if(textview.contentSize.height > textview.frame.size.height)
        {
        
            while (textview.contentSize.height > textview.frame.size.height)
            {
                textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-1)];
            }
            textview.text = [textview.text substringWithRange:NSMakeRange(0, textview.text.length-2)];
            textview.text= [NSString stringWithFormat:@"%@..",textview.text];
        }
        

        只有当我们为 UITextview 相对于该 textview 的字体和字体大小设置正确的高度时,它才有效。
        例如,如果字体是 16 号的粗体系统字体,则 textview 的高度应至少为 30。

        【讨论】:

        • 复制粘贴时崩溃
        • @Kevin,你的 textview 高度应该是你的文本字体的最小高度,例如,如果字体是粗体系统字体大小 16 意味着,你的 textview 高度应该是最小 30跨度>
        • @Kevin,您在 textview 中使用的字体大小是多少?
        猜你喜欢
        • 2010-11-23
        • 1970-01-01
        • 2017-02-02
        • 2013-02-16
        • 2013-05-26
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多