繁体   English   中英

iOS 7 UITextView高度调整大小怪异

[英]iOS 7 UITextView height resize quirk

使用我从stackoverflow上找到的多个答案中收集的信息,我已经能够使用以下方法正确调整UITextView's高度:

[bookQuoteTxtView sizeToFit];
[bookQuoteTxtView layoutIfNeeded];

我这样做是因为UITextView显然会包含不同数量的文本,因为用户可能在之前的屏幕上选择了该文本。

但是,我仍然遇到一个奇怪的问题。
似乎当传入UITextView的文本包含换行符时,它会抛出整个高度的东西。

这是没有任何换行符的文本:

在此输入图像描述

这里有相同的文字,中间有几个换行符:

在此输入图像描述

正如你所看到的(在我添加到包含它的UITextViewScrollView的橙色和黄色背景颜色的帮助下), UITextView's高度没有适当调整大小,现在文本被切断 - 所有这些都是因为那些换行符。

我用来在UITextView上进行所有动态高度变换的代码是:

// BookQuote TextView:
bookQuoteTxtView = [[UITextView alloc] initWithFrame:CGRectMake(5, 30, 310, 80)];
bookQuoteTxtView.backgroundColor = [UIColor orangeColor];
bookQuoteTxtView.font = [UIFont fontWithName:@"Arial" size:15];
bookQuoteTxtView.text = [NSString stringWithFormat:@"%@", bookObject.bookQuote];
[bookQuoteTxtView sizeToFit];
[bookQuoteTxtView layoutIfNeeded];
bookQuoteTxtView.editable = NO;

[scroller addSubview:bookQuoteTxtView];

// Now get the HEIGHT of the Book-Quote TextView:
CGRect textViewFrame = bookQuoteTxtView.frame;
CGFloat textViewFrameHeight = bookQuoteTxtView.contentSize.height;
textViewFrame.size.height = textViewFrameHeight;
bookQuoteTxtView.frame = textViewFrame;

因此,对于几乎所有传递到我的UITextView框中的字符串,这几乎完美无缺。 因此,不同长度的不同字符串都可以工作, UITextView's高度自动调整,一切都很酷。 它只是让所有东西都关闭的换行符。

具有这样的意思......看起来在字符串DO中使用“\\ n”生成的换行符,但是在进入并从Sqlite3数据库读取的字符串中嵌入/编码的换行符 - 不要。
所以你不知道问题出在哪里。

这是我用来从数据库中读取日期的代码:

  // Book Quote:
  char *bookQuoteChar = (char *)sqlite3_column_text(statement, 4);
  NSString *bookQuoteString;
  if (bookQuoteChar == NULL) {
      bookQuoteString = @"N/A";
  }
  else {
      bookQuoteString = [[NSString alloc] initWithUTF8String:bookQuoteChar];
  }

我正在越来越多地考虑它导致问题的数据库,但是我在这里总体上展示了整个图片,以确保我仍然正确地进行高度重新调整。
如果有什么东西向您发出或者有任何修复建议,请告诉我。

除了使用一种技术来设置UITextView的contentSize之外,我无法提出太多建议。

textView.text    = @"text from DB";
CGRect rect      = textView.frame;
rect.size.height = textView.contentSize.height;
textView.frame   = rect;

然后使用额外更新帧可能需要的任何技术。 希望你解决问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM