为IOS7布置一段可变长度的文本最简洁和语义化的方式是啥?

Posted

技术标签:

【中文标题】为IOS7布置一段可变长度的文本最简洁和语义化的方式是啥?【英文标题】:What is the most concise and semantic way to lay out a paragraph of text of variable length for IOS7?为IOS7布置一段可变长度的文本最简洁和语义化的方式是什么? 【发布时间】:2013-10-13 13:01:38 【问题描述】:

据我所知,段落布局可以通过以下方式完成:

a) UITextView

调整 textview 的大小以适应 didlayoutsubviews 中的内容 此处的示例:Weird thing occurs when using sizetofit of a UITextView in ios7

b)UILabel

使用 sizetofit 将 Lines 设置为 0 此处示例:Multiple lines of text in UILabel

但是,我无法让其中任何一个在 IOS7 中工作(之前在 ios6.x 中使用过)。 必须有一个明确而清晰的方法来布置一个段落,这是一个看似简单的任务。具体来说,这只是一段文本,即:

不可编辑 可变长度 无论是使用情节提要还是仅使用代码,都能始终如一地工作

请问, 方法是什么?

【问题讨论】:

【参考方案1】:

UITextView 在 iOS 7 上运行良好。如果你不使用自动布局,那么在 UITextView 对象上调用 sizeToFit 就足够了。如果您确实使用自动布局,则对 UITextView 对象进行高度限制,并按以下方式在代码中设置其 constant

CGSize sizeThatFits = [self.textView sizeThatFits:CGSizeMake(yourAvailableWidth, MAXFLOAT)];
self.textViewHeightConstraint.constant = ceilf(sizeThatFits.height);

我最近看到了UILabel 的一些问题,例如Lines missing from tall UILabel when embedding NSTextAttachment

【讨论】:

【参考方案2】:

使用 UILabel,我能够通过以下方式完成这项工作:

将行设置为 0 将我的换行模式设置为自动换行 确保高度限制设置为“大于或等于”

【讨论】:

以上是关于为IOS7布置一段可变长度的文本最简洁和语义化的方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

html标签语义化的优点

java深入了解JAVA可变长度的参数

在 TensorFlow 中处理可变长度文本

HTML语义化是什么?为什么要语义化?

可变长度消息的 TCP 传输

HTML5介绍