使用自动布局时 UIScrollview 的中心内容

2024-05-22

我在项目中使用自动布局,并且有一个滚动视图,其中有一个居中的按钮。我已经让滚动视图滚动,但不占据整个屏幕。

我尝试按照此处的教程进行操作:https://developer.apple.com/library/ios/technotes/tn2154/_index.html https://developer.apple.com/library/ios/technotes/tn2154/_index.html,以及我在这里查看了一些类似的问题。问题是我希望滚动视图的内容居中,而不是固定在顶部/底部/左/右。

这是我的视图层次结构:

你能帮我一下吗?


您已在滚动视图及其超级视图之间添加了约束。这些约束决定了滚动视图的框架。你可以把滚动视图想象成一个窗口,通过它你可以看到后面的内容。框架的大小正好是窗户的大小。当然,您可以滑动窗口,这样您就可以看到部分内容。

现在您已经知道了窗口的大小,但您还需要告诉 Xcode 内容的大小。如果你只是说把所有东西都放在中间而不告诉宽度,Xcode怎么知道中间在哪里?

因此,您必须告诉宽度(以及高度)。让我们考虑一个简单的示例,如何将单个标签置于滚动视图的中心。

您应该首先将滚动视图的边缘固定到其超级视图,就像您所做的那样。之后,您应该在标签边缘和滚动视图边缘之间添加约束,此外,您还应该添加标签的宽度和高度约束。

前导空格、尾随空格和宽度一起给出内容的宽度,而顶部空间、底部空间和高度一起给出内容的高度。

|---前导空格---|标签宽度|---尾随空格---|

|---------- 滚动视图的内容 -------------|

但是您可能希望将内容视图的宽度设置为与屏幕的宽度相同,那么您需要进行一些编程。在代码中设置插座属性

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *trailingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *leadingSpace;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *width;

In your viewWillLayoutSubviews do this

CGFloat contentWidth = self.view.frame.size.width;
CGFloat horiPadding = (contentWidth - self.width.constant) / 2;
_trailingSpace.constant = horiPadding;
_leadingSpace.constant = horiPadding;

现在标签位于滚动视图的水平中心!您的滚动视图已经知道其内容,因此您不需要为滚动视图中添加的任何其他视图执行此操作:您只需添加中心约束即可。

您也可以对高度执行相同的操作。

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

使用自动布局时 UIScrollview 的中心内容 的相关文章

随机推荐

  • 对于调用另一个异步函数的异步函数,玩笑测试失败

    我正在尝试测试一个使用另一个异步函数返回的数据的异步函数 这是解释我的问题的代码 StudentInfo js export async function getData studentData imported from another
  • Intellij:在行注释中的双斜杠后添加空格

    Intellij IDEA 我使用的是版本13 中有没有一种方法可以自动在两个斜杠和文本之间添加空格以行注释 如果我输入 这是一条评论 我希望在运行代码重新格式化时得到以下信息 在 Windows 上按 Ctrl Alt L 这是一条评论
  • 将 rel="nofollow" 添加到 WordPress 帖子中的所有链接

    我想将 rel nofollow 添加到我的 WordPress 帖子中的所有链接 并且我希望能够拥有一个不会获得 nofollow 的链接列表 我已经尝试了很多 但我无法正确完成 因为我真的不能很好地理解正则表达式 所以我有字符串 tex
  • TideKit还在进行中吗?

    自 2014 年 9 月 29 日以来 我没有听到任何有关 TideKit 的消息 您能告诉我们该项目是否是还在进行中吗 希望很快能听到你的声音 是的 TideKit 仍在进行中 最新更新是在昨天 2015 年 1 月 27 日 您可以在以
  • 如何提高大规模数据帧上 lambda 函数的性能

    我有一个df超过数亿行 latitude longitude time VAL 0 39 20000076293945312500 140 80000305175781250000 1972 01 19 13 00 00 1 2000000
  • 来自 ajax 的 Bootstrap 表 json

    我有 ajax 和 bootstrap 表的问题 我有一个 ajax JSON 我用这个方法调用 document ready function ajax url php process php method fetchdata dataT
  • 切换按钮形状不变

    我正在尝试制作一个带有绿色背景的圆形切换按钮 我用了
  • 使用 Google Translate API 获取单词的发音

    我正在尝试将法语单词的发音保存到 wav 或 mp3 文件中 我想知道 Google Translate API 上是否有任何地方 因为它有发音功能 可以让我实现这个目标 其他库也可以工作 自从提出这个问题以来 从谷歌翻译中 抓取 MP3
  • 选择更新后不起作用

    我有一个选择的下拉菜单 我更改了选项内容并调用触发器选择 更新但选择不重建下拉列表 这是我更新的
  • grep 的贪婪行为

    我认为在正则表达式中 贪婪 适用于量词而不是整个匹配 然而 我观察到 grep E color auto a ab lt printf aab returns aab而不是aab 这同样适用于 sed 另一方面 在 pcregrep 和其他
  • python 根据日期创建目录结构

    我使用以下函数根据今天的日期创建目录 usr bin python import time datetime os today datetime date today todaystr today isoformat os mkdir to
  • 如何使用 jest 测试 Web 组件 (lit-element)

    有人有一个很好的设置来使用 jest jsdom 或类似工具测试自定义元素吗 我一直在使用 Puppeteer 和 Selenium 但它们使测试运行速度减慢太多 jsdom 的任何其他替代方案或修复程序可以使下面的测试运行吗 import
  • 如何将 Jekyll 帖子分成两个不同的文件夹?

    我有一个 posts文件夹 我只是想要一种简单的方法将文件夹中的帖子分成两个不同的文件夹 并且出于纯粹的组织原因而没有任何永久链接更改 只需在您的目录中创建子目录即可 posts目录 当 Jekyll 生成永久链接时 子目录将被忽略
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn
  • Python google云函数部署失败-Madmom pip包

    我正在尝试使用 madmom python pip 包部署 Python3 7 Google Cloud Function 但是指定madmom 0 16 1requirements txt 中的内容导致部署失败 当我从requiremen
  • 如何使用 scipy.odr 估计拟合优度?

    我使用 scipy odr 将数据与权重拟合 但我不知道如何获得拟合优度或 R 平方的度量 有人对如何使用函数存储的输出来获取此度量有建议吗 The res var的属性Output http docs scipy org doc scip
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • 如何插入包含“&”的字符串

    如何编写包含 字符的插入语句 例如 如果我想将 J J Construction 插入数据库的列中 我不确定这是否有什么不同 但我正在使用 Oracle 9i 我总是忘记这一点 然后又回到它 我认为最好的答案是迄今为止提供的答复的组合 首先
  • @WebServlet 注释不适用于 Tomcat 8

    我想使用 WebServlet在 Tomcat 8 上运行的 Java EE web 应用程序中添加注释 我读到我需要在我的中声明 Servlet 版本 3 1web xml我的 Servlet 需要扩展HttpServlet 我做了所有这
  • 使用自动布局时 UIScrollview 的中心内容

    我在项目中使用自动布局 并且有一个滚动视图 其中有一个居中的按钮 我已经让滚动视图滚动 但不占据整个屏幕 我尝试按照此处的教程进行操作 https developer apple com library ios technotes tn21