使用 AutoLayout 在 UIScrollView 底部查看

2023-12-23

我正在使用自动布局在滚动视图中设置内容。滚动视图中的对象从上到下固定到前一个对象,以便它们位于另一个之下。我在这些对象下方的末尾添加了一个页脚视图。

这里有一个问题:当内容很少时,contentView 将小于屏幕高度,因此页脚视图将出现在屏幕中间的某个位置(这是正常行为)。但我想防止这种情况发生,并使视图停留在底部的某个位置。

换句话说,我想设置一个双重约束,例如:

Put this view below all the objects in the scrollview 
AND
keep this view at a distance of max [some number] of the bottom of the screen

以一种始终满足两个约束的方式:

  • 如果内容的高度大于屏幕,则向下滚动后视图将显示在底部
  • 如果高度较小,则视图将“固定”到屏幕底部,在内容底部和该视图顶部之间留下相对较大的空间

我如何使用自动布局来实现这一点?


只需使用自动布局即可轻松完成...无需任何代码。

关键是使用“内容视图”来保存元素,以及greater-than-or-equal“底部”元素和“页脚”视图之间的约束。

在此图像中,黄色是主视图,绿色是滚动视图,蓝色是内容视图,标签是灰色的,页脚视图是粉色的。

  • 从新的视图控制器开始
  • 添加滚动视图,正常约束(我用过20一直围绕,所以我们可以看到框架)
  • add a UIView到滚动视图 - 这将是我们的“内容视图”
  • 约束 contentView 顶部/底部/前导/尾随全部等于0到滚动视图
  • 限制 contentView 的宽度和高度等于滚动视图
  • 添加你的元素 - 这里我使用了 3 个标签
  • constrain the labels as usual... I used:
    • LabelA - 顶部/前导/尾随全部位于20, 到 LabelB 的垂直间距60
    • 标签B - 前导/尾随于20, 到 LabelC 的垂直间距60
    • LabelC - 领先/落后于20
  • LabelC 也设置为Number of Lines: 0所以它将扩展为多行文本
  • Add a UIView作为“页脚视图”(我在其中贴了一个标签)
  • 约束页脚查看前导/尾随/底部全部位于20(这样我们就可以看到框架了)
  • 要么在 footerView 上设置高度约束,要么使用其内容来约束其高度
  • 从 LabelC 到 footerView 添加垂直间距约束,并将其设置为>= 40
  • 最后一步,将 contentView 的 Height 约束更改为Priority: 250

现在,当您扩展/收缩 LabelC 的高度时,footerView 将保持不变at least40 点的垂直空间。当 LabelC 变得足够大以将 footerView“推”到底部下方时,scrollView 将变得可滚动。

Results:

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

使用 AutoLayout 在 UIScrollView 底部查看 的相关文章

  • NSString stringWithContentsOfFile 失败,错误代码似乎错误

    我正在尝试将文件加载到字符串中 这是我正在使用的代码 NSError error nil NSString fullPath NSBundle mainBundle pathForResource filename ofType html
  • 无法连接到 iTunes Store(获取应用内购买列表)

    我正在尝试从我的应用程序的应用程序内购买项目商店中获取列表 这是我所做的 安装了新的配置文件并启用了应用内购买 替换配置文件很棘手 但我认为我的设置是正确的 验证税务和银行信息是否正常 该应用程序已在商店出售 创建测试用户 在测试设备上以测
  • 如何在iOS中处理1到3个手指的滑动手势

    我使用以下代码来处理代码中的 1 根手指滑动 UISwipeGestureRecognizer swipe UISwipeGestureRecognizer alloc initWithTarget self action selector
  • 从 UIPickerView 的选定行设置 UIButton 的标题

    详细场景是这样的 我使用循环创建 10 个按钮并设置 0 9 的标签 点击每个按钮时 我将调用 UIPickerView 在其中加载来自不同数组的数据 到这里我就得到了预期的结果 但我希望 pickerView 中选定的行应设置为相应按钮的
  • React-native-vision-camera无法访问后面的普通摄像头

    我正在尝试在 iPhone 11 Pro 上使用 普通 相机 我使用反应本机视觉相机 当我运行这段代码时 const devices useCameraDevices const deviceBack devices back consol
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • 如何制作带有 SWIFT 图像的弹出窗口

    我想知道如何制作类似于此示例的弹出窗口 原始窗口充满了按钮 选择这些按钮后将拉出我想要使用的图像 我会简单地创建一个可重用的UIView组件以及作为子视图所需的一切 例如UIImageView为了你的形象 UILabel or a UIBu
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 用户验证 Facebook 后未调用应用程序打开 Url 方法

    我已将 ios 应用程序中的 facebook 升级到 3 0 并使用提供的代码https developers facebook com docs howtos login with facebook using ios sdk http
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • 叠加 SKScene 未显示

    我正在尝试将 SKScene 覆盖在 SCNScene 上 当我在模拟器和 iPhone6 上运行我的应用程序时 overlayScene SKScene 按预期显示 但是当我尝试在 iPhone5 上运行它 尝试了 2 个不同的设备 时
  • Firebase ref.removeAllObservers() 是否也会递归删除子观察者?

    我看到了一些与此相关的问题 但没有一个真正证实了我的疑问 If I removeAllObservers 在父节点上 这是否也会递归地删除可能已附加在所有子节点和子节点的子节点等处的所有其他观察者 递归地 API 文档为removeAllO
  • 如何使用 RX 应用宽限时间?

    我有一个Observable
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • 如何在 VB.NET 中引发事件之前检查订阅者

    在 C 中 您可以执行以下操作 if Changed null Changed this EventArgs Empty 但是您在 VB NET 中做什么呢 有RaiseEvent but is RaiseEvent Changed Me
  • 更改按钮文本和操作 - Android 开发

    我无法弄清楚如何更改按钮的文本和操作 我想要做的是有一个带有文本 播放 的按钮 单击它会播放一首歌曲并将文本更改为 暂停 然后 当您再次单击它时 它将暂停歌曲并将文本更改为 播放 我知道如何使用媒体播放器 编码 只是不知道如何以这种方式编码
  • 线程完成工作后如何返回值?

    假设我们有一个简单的例子 public Example extends Thread String temp public Example Override public void run temp a value public stati
  • 鞍点的位置

    我有以下问题 假设我们有一个9 8的矩阵 如果矩阵位于某个位置 则称其具有 鞍点 是其行中的最小值和其列中的最大值 在符号 中 a i j 是鞍点 如果 a i j min a i k max a k k 1 lt k lt 8 1 lt
  • 使用Python的正则表达式将浮点数替换为“dot”

    我想替换 出现在我的字符串中带有 点 的浮点数中 反之亦然 Example t I am coder I work in Google I earn 98748 85 Expected output I am coder I work in
  • R 中的字符编码

    我正在尝试阅读csv由 Sql Server Management Studio 生成并编码为的文件UTF 8 我保存时选择了该选项 到R版本 3 0 1 x64 至read csv2 我无法让 R 正确显示特殊字符 如果我设置fileEn
  • 从字符串中获取整数月份值

    我正在解析来自 AWS 的 cron 字符串 如下所示cron 0 7 13 November 2019 有没有一种干净的方式可以从November回到11使用 Go 的内置类型 这time Month类型允许映射int to string
  • 从亚马逊 s3 存储桶子文件夹获取文件

    我正在尝试从亚马逊 S3 存储桶子文件夹中获取所有文件 并使它们可以在网页中下载 我有一个名为图像的桶 在那个桶里我还有一些其他文件夹 现在我试图获取该子文件夹内的所有文件并将其显示在页面中 S3 桶 图片 图像 测试1 图像 测试2 图像
  • SQL 声明变量

    谁能看一下我的发言 DECLARE tblName varchar MAX strSQL varchar MAX SET tblName SELECT DISTINCT o name as TableName FROM sysobjects
  • 如何将 SQL Server 2005 数据传输或导出到 Excel

    我有一个简单的 SQL 选择 查询 我想将结果转储到 Excel 文件中 我只能另存为 csv 并转换为 xls 会产生一些超级丑陋的输出 无论如何 据我所知 使用谷歌 这似乎并不那么简单 任何帮助将不胜感激 SSIS 做这样的事情是轻而易
  • 如何更改 NsdManager 使用的 Android 设备名称?

    我正在使用 NsdManager 在本地网络上注册 Web 服务 我的问题是设备名称称为 android 因此我可以从笔记本电脑上以 android local 身份访问手机 我怎样才能改变这个名字 我想要一些更独特的东西 您无法更改此设置
  • 使用 www::mechanize 时的 Iconv::IllegalSequence

    我正在尝试做一些网络抓取 但 WWW Mechanize gem 似乎不喜欢编码并且崩溃 post 请求导致 302 重定向 机械化遵循 到目前为止一切顺利 并且生成的页面似乎使其崩溃 我用谷歌搜索了很多 但到目前为止还没有找到如何解决这个
  • 如何更改 QPlainTextEdit 中选项卡的宽度

    When using the QPlaintextEdit in PyQt5 if I press the Tab button on my keyboard I get a tab space which is equal to size
  • Django 管理员未对用户密码进行哈希处理

    我在用AbstractBaseUser and UserCreationForm与我的 Django 应用程序 通过我的应用程序注册用户时 密码以哈希格式保存并保存在数据库中 但是当我尝试使用 Django 管理站点执行相同的操作时 密码会
  • 使用多个 Docker 容器 VS 标准 Node 集群时的性能和可靠性

    使用多个 Docker 容器 VS 标准 Node 集群时的性能和可靠性 您好 我有一个关于我遇到的两种设置的性能 可靠性和增长潜力的问题 我距离 Docker 或集群专家还很远 所以任何建议或提示将不胜感激 The app Typical
  • PhoneGap Build 中 Android 的横向启动屏幕

    我应该输入什么config xml或者我一般应该做什么 才能让 PhoneGap Build 应用程序的启动屏幕在横向模式下在 Android 设备上正确显示 PhoneGap Build 用于编译 docs https build pho
  • 使用 cProfile 对其他完美工作的多处理 python 脚本进行分析时出错 [重复]

    这个问题在这里已经有答案了 我写了一个小的 python 脚本 使用multiprocessing See https stackoverflow com a 41875711 1878788 https stackoverflow com
  • 如何在 SwiftUI 中编写分数

    我正在制作一个小应用程序来帮助孩子们学习数学 但是 我不知道如何在 SwiftUI 中编写分数 I would like something like this 1 2 感谢您的帮助 更新 Xcode 13 4 iOS 15 5 现在完全动
  • 如何分离uWSGI的日志?

    我想将 uwsgi 的日志 如访问日志 请求日志 错误日志 分离到各个文件中 目前这些都在同一个文件中并且格式不正确 有配置指令可以为请求和所有其他消息指定不同的记录器 logger and req logger 例子 uwsgi ini
  • 使用 AutoLayout 在 UIScrollView 底部查看

    我正在使用自动布局在滚动视图中设置内容 滚动视图中的对象从上到下固定到前一个对象 以便它们位于另一个之下 我在这些对象下方的末尾添加了一个页脚视图 这里有一个问题 当内容很少时 contentView 将小于屏幕高度 因此页脚视图将出现在屏