标签不显示滚动视图中的所有文本

Posted

技术标签:

【中文标题】标签不显示滚动视图中的所有文本【英文标题】:Label doesn't show all the text inside scrollView 【发布时间】:2018-02-23 21:32:23 【问题描述】:

我希望DecriptionLabel(Lorem Ipsum 之一)能够看到其中的所有文本。如您所见,它正在被修剪。

这两个按钮应该在其他所有内容的下方,但在DescriptionLabel 包含小文本的情况下,按钮应该贴在视图的底部。

这就是为什么我选择按钮之间的>= 20 距离和DescriptionLabel 之间的距离(如果有意义的话)。

如何解决文本的修剪问题?

谢谢。

【问题讨论】:

【参考方案1】:

我最初是在回答How to make button stick to bottom of scroll view if the content isn't large enough?,但由于它被标记为与此重复,我将我的答案发布在这里。请尝试通过以下方式设置约束:https://imageshack.com/a/img923/6671/Txzu98.png 诀窍是您将 Button.Bottom Equal To ContainerView.Bottom 设置为 lower priority(我使用 750)而不是 Button.Top 大于或等于 Label。底部(这里我使用默认1000) 标签的行数必须设置为 0。按钮的高度应由高度约束设置(在本例中为 50)。容器视图高度约束应具有低优先级(在此案例 250) 您应该运行代码以查看设备或模拟器上的实际结果。故事板显示它有点不同。 对于当前问题: https://imageshack.com/a/img923/7276/tQeT0h.png 基本思路是一样的。 Button Down 与上述答案中的 Button 具有相同的约束,但没有 Button.Top 大于或等于 Label.Bottom。 Button Up 和 Button Down 之间应该有固定的垂直约束。我正在设置具有固定高度的 Button Up 并设置尾随和前导约束等于 Button Down 的尾随和前导。 约束 Button.Top 大于或等于 Label.Bottom 现在是 Button Up.Top 大于或等于 Label.Bottom

【讨论】:

嗨!答案非常适合已标记为重复的帖子。但是,在这种情况下,当有两个按钮时,我不知道如何使它工作。我也尝试更改两个按钮的底部优先级,但没有成功。 当文本很多时,您希望按钮有什么行为?他们是否应该在其中部分不可见的情况下下降(可能整个按钮不可见)。如果是,包含它们的视图应该是可滚动的吗?还是别的什么? @suToTheW 行为应该与以前相同。两个按钮都应该随着滚动视图滚动(当有很多文本时)并在标签较小时保持在底部。只是有两个按钮。 @TomaRadu-Petrescu 我试图在主要答案中解释它。我希望它可以理解。 @TomaRadu-Petrescu 我希望我不会再错了。逆序: 2. 如果优先级不小,则内容视图的高度不会根据其中的元素高度。我在这里接受的答案中发现了这一点:***.com/questions/38485129/… 1。你是绝对正确的,它没有损坏,感谢您指出这一点。它既满足约束又可以工作,因为内容视图的高度取决于其元素的高度。现在删除我的错误解释。再次感谢。【参考方案2】:

您是否将 label 的 numberOfLines 设置为 0(这意味着根据其文本长度自动调整标签大小)?

【讨论】:

【参考方案3】:

您应该添加以下约束: (以下是 sudo 代码)

// Constraints for ScrollView
scrollView.top = ViewController.view.top
scrollView.leading = ViewController.view.leading
scrollView.trailing = ViewController.view.trailing
scrollView.bottom = ViewController.view.bottom

// Constraints for View
view.top = scrollView.top
view.leading = scrollView.leading
view.trailing = scrollView.trailing
view.bottom = scrollView.bottom

// Width of view
view.width = ViewController.view.width

现在您只需要确保“视图”的每个子项都有布局约束,并且它的高度正确并显示 textview 的完整大小。

【讨论】:

【参考方案4】:

添加以下约束:

scrollview.contentview.height >= safearea.height

这可能会在界面生成器中显示错误,但在我的测试中有效:

要消除设计时错误,您可以为滚动视图的内容视图设置设计时固有内容大小(在我的例子中,我使用安全区域的高度 554):

另一个选项(在 IB 中没有占位符值)是创建以下约束...

scrollview.contentview.height = safearea.height

...并将其优先级更改为低于标签的垂直内容压缩阻力的值。

【讨论】:

是的,这可行,但我不知道如何解决新错误。 嗯......你所做的就像隐藏错误一样。实际上,它仍然存在。 嗯...运行时控制台中没有错误或警告,是吗?所以也许只是 IB 无法处理该配置。您可以在 IB 中使用占位符值是有原因的。 这就是为什么它被称为“设计时固有大小”而不是“运行时固有大小” 对。显然,内在内容大小在运行时被正确计算。但是...如果您认为这是错误的方法,则不必使用我的解决方案。

以上是关于标签不显示滚动视图中的所有文本的主要内容,如果未能解决你的问题,请参考以下文章

自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式

滚动视图上不显示文本视图

如何在表格视图 IOS 内的滚动视图中创建文本字段

带有标签栏的滚动视图

如何检查 UIScrollView 内容是不是不需要使用滚动

水平滚动视图不滚动