带有隐藏 UIView 的自动布局?

2023-12-05

我觉得这是一个相当常见的显示/隐藏范例UIViews, 最经常UILabels,取决于业务逻辑。我的问题是,使用 AutoLayout 响应隐藏视图的最佳方法是什么,就好像它们的框架是 0x0 一样。以下是包含 1-3 个功能的动态列表的示例。

Dynamic features list

现在我从按钮到最后一个标签有一个 10px 的顶部空间,当标签隐藏时,它显然不会向上滑动。截至目前,我创建了此约束的出口,并根据我显示的标签数量修改常量。这显然有点hacky,因为我使用负常数值将按钮向上推到隐藏帧上。它也很糟糕,因为它不受实际布局元素的限制,只是基于其他元素的已知高度/填充进行偷偷摸摸的静态计算,并且显然与 AutoLayout 的构建目的相悖。

显然,我可以根据我的动态标签创建新的约束,但这需要大量的微观管理和大量的冗长的尝试来折叠一些空白。有更好的方法吗?更改帧大小 0,0 并让 AutoLayout 在不操作约束的情况下完成其工作?完全删除视图?

但老实说,仅仅从隐藏视图的上下文中修改常量就需要一行代码和简单的计算。重新创建新的约束constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:看起来好沉重。

2018 年 2 月编辑:参见 Ben 的回答UIStackViews


我个人对显示/隐藏视图的偏好是创建具有适当宽度或高度约束的 IBOutlet。

然后我更新constant价值0隐藏,或者任何应该显示的值。

该技术的一大优点是可以保持相对约束。例如,假设您有视图 A 和视图 B,其水平间隙为x。当视图A宽度constant被设定为0.f然后视图 B 将向左移动以填充该空间。

无需添加或删除约束,这是一个重量级操作。只需更新约束constant会成功的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有隐藏 UIView 的自动布局? 的相关文章

随机推荐

  • 从 powershell 脚本生成的程序中正常退出

    假设我有以下脚本 originalPath pwd D code ps1 misc title ps1 dynamo db CURPATH PSScriptRoot path txt DB DIR cat CURPATH cd DB DIR
  • 使用 Powershell 通过传入参数来更新 web.config 中 XML 元素的 configSource

    我试图找到一种方法 通过更新 web config 中 appSettings 元素的 configSource 来更新不同环境的 web config 这是我知道的方法 xml get DocumentElement appSetting
  • 如何在Dask中进行行处理和项目分配

    类似的未回答问题 Dask DataFrame 的逐行处理 我正在处理数百万行长的数据帧 因此现在我尝试并行执行所有数据帧操作 我需要转换为 Dask 的此类操作之一是 for row in df itertuples ratio row
  • 我有md5加密的密码,当用户使用“忘记密码”时如何将密码提供给用户?

    我有 md5 格式的密码数据库条目 但是当用户使用 忘记密码 时 我该如何给他 她所需的密码 你不能通过 MD5 哈希来做到这一点 你也不应该能够 密码恢复应该是很棘手的 通常的过程是将密码重置令牌 URL 发送到他们的电子邮件地址 以便用
  • 打开文件后程序崩溃[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我需要将文件中的值读取到我的程序中 文件打开成功 但随
  • ViewFlipper 不随子列表视图一起翻转

    滑动时 ViewFlipper 不工作 如果我放置其他视图而不是列表视图 则翻转效果很好 我还应该为列表视图添加其他代码吗 并且视图翻转器内的滚动视图也不适合我 这是我的 xml 代码
  • 右键单击坐标[重复]

    这个问题在这里已经有答案了 好吧 我正在使用这个函数来获取 X Y 坐标
  • symfony 1.4:如何将异常消息传递给error.html.php?

    我尝试使用特殊变量 message此处描述http www symfony project org cookbook 1 2 en error templates但似乎这个变量没有在 symfony 1 4 中定义 至少它不包含以这种方式传
  • Tensorboard 在端口 6006 上无法正常运行

    我一直在使用张量板时遇到问题 可能是由于 windows10 中的退出不干净造成的 我使用以下代码在 Jupyter 中启动它 load ext tensorboard tensorboard logdir dir 这就是我得到的 ERRO
  • 受约束泛型类型的“As”运算符

    考虑 TTest
  • 在生产模式下从控制台调用 Angular2 组件方法

    有没有办法在生产模式下调用组件或服务方法 我知道可以使用以下方式调试应用程序ng probe并使用 Angular2 调试应用 Augury https augury angular io 但是 这些仅在开发模式下有效 以下是在生产模式下
  • 通过 Xamarin.Forms 中 WebView 中的 Javascript onClick 事件调用 C# 函数

    我有一个帖子类型WebView我设法将其与服务响应绑定为字符串 但我有一些链接 例如具有 ID 的相关帖子 单击这些链接后 我希望用户转到该文章 我尝试了很多解决方案 但它看起来像JavaScript不会在点击时调用 它会在加载时调用 因为
  • (Python)列表索引超出范围 - 迭代[重复]

    这个问题在这里已经有答案了 for i in range len lst if lst i 0 1 or lst i 1 1 lst remove lst i return lst 这给出了 IndexError 列表索引超出范围 为什么会
  • 使用 OpenCV 以正确的速度播放视频

    我在播放视频文件时遇到问题 为什么是慢动作 怎么才能让它正常速度呢 include opencv2 opencv hpp using namespace cv int main int char VideoCapture cap eye m
  • MONO 4.6.2 服务器 CPU 使用率高

    我已经更新了我的 Ubuntu服务器到16 04 1 长期支持 and MONO to v4 6 2 来自官方存储库 自更新以来 网站仍然运行良好 但大约一两天后 一些 MONO 进程变得疯狂并停止运行 100 of the CPU 我有不
  • Selenium href 空白新窗口测试

    因此 使用 Selenium 我想测试页面上的链接并查看它们是否打开一个新窗口 它们不是 javascript 链接 只是一个基本的 href target blank 我想确保新打开的窗口确实加载了页面 我可以执行所有脚本来单击链接 但是
  • 如何为采用泛型参数的泛型函数调用 GetMethod(不使用 GetMethods)?

    我知道我可以使用获取方法信息GetMethods 但我想知道如何正确地做到这一点而不GetMethods 我读过其他 SO 问题和答案 这些问题和答案表明这是不可能的 或者建议只使用 LINQ 但这并不是问题的真正答案 从最基本的层面考虑
  • NGINX 在 HTML 文件中执行嵌入的 PHP [重复]

    这个问题在这里已经有答案了 我有以下配置 server listen 80 default server access log var www logs access log error log var www logs error log
  • Android 服务无限期运行

    我注意到像 Skype 这样的应用程序使用的服务基本上是 24x7 运行 根本不会被杀死 您甚至无法使用任务杀手手动杀死它 您可以通过运行服务并杀死服务来杀死它们 这是如何实施的 我发现在 Android 2 3 中 我的服务在运行一段时间
  • 带有隐藏 UIView 的自动布局?

    我觉得这是一个相当常见的显示 隐藏范例UIViews 最经常UILabels 取决于业务逻辑 我的问题是 使用 AutoLayout 响应隐藏视图的最佳方法是什么 就好像它们的框架是 0x0 一样 以下是包含 1 3 个功能的动态列表的示例