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

iOS怎么做流体布局

夏烨霖
2023-03-14

从隐藏元素不再占用空间的意义上来说,在iOS中制作流畅布局的正确方法是什么?

我有一个表格视图,每个单元格中有一个定制的详细类型的视图,带有标题、副标题和一行额外信息:

额外信息最多可以是三对图标和一个带有值的标签。单元内所有视图的布局都是使用AutoLayout完成的,没有丢失或不明确的约束。

我想实现的是,当值为0时,图标和标签不会显示,右侧的视图会向左移动。

如果我只使用< code>setHidden:方法,隐藏部分的宽度不会改变,因此只有空白,但视图不会移动。示例:

它应该看起来像这样:

以下问题是相关的,但似乎不适合我的情况:

  • 苹果手机上的流畅用户界面布局
  • 使用隐藏的 UI 视图进行自动布局?

我试图遵循为需要设置为零的四个框架创建布局约束的方法:心形图标的宽度、包含值的标签的宽度、这些框架之间的空格以及标签和下一个图标之间的空格。这不起作用,因为我无法将布局约束绑定到代码中的出口,此外,对于应该是常见场景的东西来说,这似乎是一种麻烦的方法。

编辑:我修复了出口到约束的问题:为此,有必要为表格单元格创建一个子类,并为那里的约束创建出口。

对于“常见场景”,我指的是在网页设计中做类似的事情,其中将显示样式设置为很简单,并且具有预期的效果。我希望在iOS中也有类似的简单方法。

我一直在考虑使用具有可重用单元格的集合视图,但是我需要设置一个委托和一个数据源等等,在我走这条路之前,我想确保这是正确的方法。

共有2个答案

倪振海
2023-03-14

隐藏视图将保留其框架,因此自动布局将没有理由调整视图。正确的方法是从超级视图中删除视图。您必须做的最后一件事是仔细检查约束。由于您将删除视图,因此不能将这些视图用于自动布局。这将需要在 UI 上进行相当多的约束设置。

贡和裕
2023-03-14

无需删除隐藏视图。将约束连接到代码中的出口,当您确定视图处于隐藏状态时,请从约束的常量中减去。然后,在单元格的准备中,请记住将约束的常量返回到正确的值。

 类似资料:
  • 我有一个字符串a的列表,并试图找到a的所有元素a按照某种规则与a的另一个元素b匹配,然后创建一个,其中包含所有的a->所有匹配的b。 详细内容: 对于a中的每个a,使用谓词P将其与a中的每个b进行比较。 如果P(a,b)匹配,则从a和b生成一对(x,y)。 将所有对按x分组,并以映射形式返回。 这种方法的问题是,我首先需要构造一个庞大的对列表,如果我的数据集只有几百万字,那么它可能会耗尽内存。

  • 有没有大佬能系统性的讲一下。 我的关注点: 服务的provider、consumer里的version该怎么配置? 上线顺序有什么讲究? 权重要不要考虑? 怎么做新版本的代码稳定性的监控 业务稳定后,旧版本的代码实现该如何管理? 什么样的场景下,不适合灰度发布?

  • 本文向大家介绍rem布局字体太大怎么处理?相关面试题,主要包含被问及rem布局字体太大怎么处理?时的应答技巧和注意事项,需要的朋友参考一下 一般情况下我们设置了html根节点的字体大小作为rem单位的一个基本标准,那么我 们可以紧接着在body标签内设置一个字体大小为该应用的基本字体大小 一百三十九、 如何调用原生的接口? 首先你得选择一个合适的框架作为自己的基础,以Dcloud为例,页面中一定要

  • 本文向大家介绍微信支付怎么做?说说流程相关面试题,主要包含被问及微信支付怎么做?说说流程时的应答技巧和注意事项,需要的朋友参考一下 1.申请微信公众号及支付功能申请:根据公众号申请流程申请即可。 2.获取商户支付配置信息及支付测试配置: 支付授权目录最多可以配置三个域名,测试授权目录只可以一个,这里需要 注意的是域名大小写必须要网站URL—致,否则会无法通过授权,提示支付请求的 URL不合法。另外

  • 本文向大家介绍IOS实现自定义布局瀑布流,包括了IOS实现自定义布局瀑布流的使用技巧和注意事项,需要的朋友参考一下 瀑布流是电商应用展示商品通常采用的一种方式,如图示例 瀑布流的实现方式,通常有以下几种 通过UITableView实现(不常用) 通过UIScrollView实现(工作量较大) 通过UICollectionView实现(通常采用的方式) 一、UICollectionView基础 1、

  • react 使用masonic做瀑布流,同一个布局下有两个瀑布流,滑动一个,另一个瀑布流也会重新计算位置。这个有人知道怎么处理吗?求大佬指教 随着底部红色区域滑动,顶部也跟着自动重新计算,导致出现了黄色区域的空白 demo地址:https://codesandbox.io/s/masonic-example-forked-gwrvw7?file=/...