当前位置: 首页 > 知识库问答 >
问题:

UI滚动视图,随内容的本质大小展开,直到高度 X,然后滚动

司徒俊雄
2023-03-14

我基本上试图重现警报标题和消息部分的行为。

标题和消息标签显示在滚动视图中。如果标签文本增加,则警报高度也会随着标签的固有内容大小而增加。但在达到特定高度时,警报高度会停止增加,并且标题和消息文本变得可滚动。

我读过:

文章

  • 自动布局魔法:内容大小优先级
  • 编辑自动布局约束(留档)
  • AutoLayout中的固定宽度动态高度滚动视图
  • 使用UIScrollView自动布局在iOS

堆栈溢出

  • 向布局约束添加优先级
  • 不等式约束歧义
  • UIScrollView可滚动内容大小不明确
  • 两个不等式约束的模糊性
  • 自动布局时IOS滚动视图的可滚动内容高度不明确

答案可能就在那里,但我无法抽象出来。

我尝试过:

我只关注带有两个标签的滚动视图,我试图做一个最小的示例,其中父视图将根据滚动视图的固有高度调整大小。我玩过很多限制。以下是一个不起作用的组合(在众多组合中):

我使用过自动布局和普通约束,甚至是固有的内容大小。另外,我知道如何用自动布局获得一个基本的滚动视图。然而,我从来没有做过任何事情的优先级和内容拥抱和抗压。从我所做的阅读中,我对它们的意思有一个肤浅的理解,但我不知道如何在这种情况下应用它们。我的猜测是我需要做一些满足和优先的事情。

共有3个答案

华俊弼
2023-03-14

它可以在界面生成器中使用自动布局来完成,没有任何困难。

  1. 设置具有“小于或等于”关系的外部容器视图(示例中的“用于滚动视图的父容器”)高度约束

2 .为内容视图和滚动视图添加“等高”约束。然后为此约束设置低优先级。

就这样。现在,如果内容高度发生更改,滚动视图将按高度调整大小,但仅限于受外部视图高度约束限制的最大高度。

韩景辉
2023-03-14

您的问题不能仅靠约束来解决,您必须使用一些代码。那是因为滚动视图没有内在的内容大小。

所以,创建一个滚动视图的子类。也许给它一个属性或委托或其他东西来告诉它它的最大高度应该是多少。

在子类中,无论内容大小何时更改,都会使固有内容大小无效,并将新的固有大小计算为内容大小的最小值和允许的最大值。

一旦滚动视图有了固有的大小,您在它和它的超级视图之间的约束实际上会对您的问题有意义。

梁烨
2023-03-14

我想我已经用纯自动布局达到了你想要的效果。

结构

首先,让我向您展示我的结构:

内容视图是具有白色背景的视图,调用方视图和底部视图具有固定高度。底部视图有你的按钮,来电视图有你的标题。

解决方案

所以,在设置了基本约束之后(注意滚动视图中的视图与滚动视图之间有顶部、左侧、右侧和底部,并且宽度相等),问题是滚动视图不知道应该有什么大小。所以我做了什么:

我希望滚动条可以增长到最大值,所以我在超级视图中添加了一个比例高度,以设置最大值:

然而,这带来了两个问题:滚动视图仍然不知道应该有什么高度,现在你可以调整大小,滚动视图将通过他的内容的大小(如果内容小于最大大小)。

因此,为了解决这两个问题,我在滚动视图和滚动视图中添加了一个具有较小优先级的相等高度

我希望这能帮到你。

 类似资料:
  • 我正在设计一个具有滚动视图的页面,其上方是表格视图(禁用滚动)。为此,我在这个问题中提到了答案 - 使UITableView不可滚动并调整高度以容纳所有单元格,但没有成功。 视图层次结构以及提供的约束- -主视图 -滚动视图< br >固定在主视图的所有边上(0,0,0,0),限制边距 -内容视图 固定到滚动视图(0,0,0,0),与主视图宽度相等,与主视图高度相等(优先级-250) -内容视图中

  • 关于如何为子项获取相应的可视化组件,然后调用BringIntoView(),有人有什么提示吗?

  • 我有: < li >应该可以在横向和纵向模式下工作的应用程序。 < li >在顶部显示全尺寸滚动视图。 < li >固定宽度和高度的滚动视图中的某些视图。(增加了H和W约束) < li >设置为在滚动视图中在容器中水平居中查看。(根据约束条件添加) 我知道解决这个问题的唯一方法是设置尾随和前导约束。但是对于不同的iPhone(5.5"、4.7"、4"),我需要设置不同的尾随和前导约束。 如何消除此

  • 所以我在垂直ScrollView中有一个水平回收器视图。我的布局中的所有内容都显示得很好,并且都按照我想要的方向滚动,并且它做得很好。 我唯一的问题是,RecyclerView位于ScrollView中其他内容的下方,当RecyclerViewer部分可见时,它会在启动时将RecyclerView的底部与屏幕的底部对齐。这意味着RecyclerView上方的内容被推离屏幕。 有谁知道为什么会发生这

  • 我的页面中有一个ui视图。单击某个按钮时,将加载ui视图并替换为某个HTML。我想将页面向下滚动到页面刚加载的部分。 这有可能吗?提前感谢

  • 我在Scrollview中有Recyclerview 现在,滚动时,layoutStaticContent保持固定在顶部