gpt4 book ai didi

ios - 即使具有 1000 内容压缩阻力,UIScrollView 中嵌套 View 中的 UILabel 在自动布局下也会被压缩

转载 作者:行者123 更新时间:2023-12-02 04:38:14 26 4
gpt4 key购买 nike

如果我将由以下两个 View 层次结构和约束之一组成的场景组合在一起(在 InterfaceBuilder 中轻松完成),那么一切都会按预期工作......

<小时/>

1)

  • 全屏UIScrollView (到 super View 所有边缘的距离为 0)
  • UIScrollView内,单个UILabel ,与 numberOfLines设置为0 ,宽度为 100%(前导和尾随距离为 0 距离约束),没有高度约束,有大量文本(1000 行),顶部和底部约束常量为 0(因此距UILabel 的边界到 UIScrollView 的内容 View )。

行为符合预期:UILabel调整大小以适合其内容,这会强制 UIScrollView 的内容 View 展开以适应文本,使所有文本都可滚动。

<小时/>

2)

  • 一个UILabelnumberOfLines等于 0在一些UIView内一些UIView内的innerView outerView 这样:
    • 标签的边缘与 innerView 边缘的距离均为 0(优先级为 1000)
    • innerView 的边缘与 outerView 的边缘的距离均为 0(优先级为 1000)
    • outerView的顶部、前缘和后缘与 super View 的距离均为 0(优先级为 1000)
    • outerView 的高度小于其父 View 的完整高度,由高度约束或父 View 底部距离约束强制执行,但此最终约束的优先级较低- 比如说,600。

在这种情况下,行为再次符合预期:如果 UILabel的内容压缩阻力优先级大于 600,outerView 的高度会增加以适合所有文本,如果较小,标签会被截断。

<小时/>

然而,以下情况并没有按照我预期的方式工作,尽管在我看来与其他两个情况完全相似:

3)

  • 全屏UIScrollView ,就像第一种情况
  • UIScrollView内,一个UIView innerView,其边缘与 UIScrollView 的距离均为 0的边缘(如第二种情况)。
  • innerView中,一个UILabelnumberOfLines设置为0 、大量文本,内容压缩阻力优先级设置为 1000。

根据前两个测试用例,我的期望是 UIScrollView的内容 View 应调整大小以适合标签的文本。然而,相反,内容 View 被设置为 UIScrollView 的大小。 ,innerView 也是如此,以及 UIScrollView不可滚动。

为什么我会得到这种与我之前的两个测试用例不一致的行为,以及如何获得工作内容压缩阻力并具有我的 UILabel 的内在内容大小当我将它嵌套在 UIScrollView 内的 View 中时受到尊重在自动布局下?我看不出自动布局有任何理由压缩我的 UILabel在第三种情况下,它完全有可能压缩它,并且仍然以与第一种情况完全相同的方式满足所有约束。

最佳答案

我也遇到了同样的问题。苹果似乎存在一个错误,因此多行文本需要两次传递的方法才能正确布局,并且这一切都依赖于属性preferredMaxLayoutWidth。

我最终将这两个方法添加到 ScrollViewController 中:

- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self performSelectorOnMainThread:@selector(adjustScrollContentSizeOnMainThread) withObject:nil waitUntilDone:NO];
}

- (void)adjustScrollContentSizeOnMainThread
{
self.myLabel.preferredMaxLayoutWidth = self.myLabel.bounds.size.width;
}

我的解决方案基于这个答案: https://stackoverflow.com/a/13616052/2828256

关于ios - 即使具有 1000 内容压缩阻力,UIScrollView 中嵌套 View 中的 UILabel 在自动布局下也会被压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18420146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com