草庐IT

ios - Autolayout 和 Scrollview 宽度固定到屏幕(不是内容)

coder 2023-09-26 原文

我已经关注了很多示例(大部分相同),例如 https://www.youtube.com/watch?v=UnQsFlMGDsI

我打开一个新项目,在其中放置一个 ScrollView ,然后在其中放置一个“内容” View ,将 ScrollView 约束到它的 super View (顶部、底部、左侧和右侧),然后将内容 View 约束到 ScrollView 的内部,并且然后它是 ScrollView super View 的宽度和高度。红色 ScrollView 和黑色内容 View 。

我放入一个文本字段,然后将其限制在内容 View 的顶部、前导和尾部。这一切在 Storyboard 中看起来都不错,但是当我运行它时,内容 View 不存在,文本字段是其中对象的宽度(基于文本字段)。

然后我将内容 View 的高度更改为固定的 800,我现在可以看到内容 View ,但宽度由文本字段的大小固定(而不是相反),即如果我添加更多“测试信息”文字变得更宽。

这不是我真正的项目,但我只是想消除原因,所以从头开始做,结果也是一样。我看不到我错过了什么(希望有一个勾选框)。

如果我强制文本字段为 700 宽,它会水平向左滚动,我看不到如何将内容 View 宽度固定到屏幕大小。

最佳答案

更新的答案

对我之前发布的答案感到抱歉。我错过了一些要点。在这里,我将逐步向您解释需要做什么(引用屏幕截图)。

下面是添加了约束的整个 View 的概览:

首先要做的是,添加 ScrollView 并添加相对于父 View 的前导、尾随、顶部和底部的约束。

接下来要做的是,在 ScrollView 中添加一个 UIView。现在这部分比较棘手,刚刚添加的 View 需要充当 ScrollView 的内容 View 。因此,您需要添加到 ScrollView 的任何 View 实际上都应该放在该 View 中。对于此 View ,设置约束条件,如顶部、底部、前导和尾随。但这里棘手的部分是,将底部约束设置为 superview(即 ScrollView )为零且优先级较低(250)。还将此 View 的宽度设置为等于 ScrollView 的父 View ,即 ViewController 的 View 以及 ScrollView 。

内容 View 的约束

底部约束设置为零低优先级。

引用 ScrollView 的父 View 和 ScrollView 的宽度相等。

底部约束设置为低优先级,因为当涉及到 View 的底部约束时,为了滚动工作,内部 View 的约束需要被赋予更高的优先级。

现在在内容 View 中添加所需的 View ,在您的例子中是文本字段。添加与内容 View 相关的所有必需约束(顶部、前导、尾随、底部)。添加您希望添加的任意数量的 subview ,但请确保您为内容 View 的最底部 View 指定底部约束,该约束也具有所需的优先级。 以下是我在内容 View 中添加的文本字段的约束:

请注意,在这种情况下,底部约束是必需的优先级。

最终输出:

黄色 = ViewController 的 View ,绿色 = ScrollView ,红色 = 容器 View ,粉色 = 文本字段。

给任何需要制作水平 ScrollView 的人的注意事项,只需将内容 View 的宽度与高度切换,并将其底部约束与尾随约束切换。也就是说,设置与 superview 和 scrollview 相同的高度,并将尾部空间固定到低优先级的 ScrollView 。

关于ios - Autolayout 和 Scrollview 宽度固定到屏幕(不是内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809848/

有关ios - Autolayout 和 Scrollview 宽度固定到屏幕(不是内容)的更多相关文章

  1. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  2. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  3. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  4. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  7. 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢 - 2

    HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. ruby - 在 Ruby 中将整数格式化为固定长度的字符串 - 2

    有没有一种简单的方法可以将给定的整数格式化为具有固定长度和前导零的字符串?#convertnumberstostringsoffixedlength3[1,12,123,1234].map{|e|???}=>["001","012","123","234"]我找到了解决方案,但也许还有更聪明的方法。format('%03d',e)[-3..-1] 最佳答案 如何使用%1000而不是进行字符串操作来获取最后三位数字?[1,12,123,1234].map{|e|format('%03d',e%1000)}更新:根据theTinMan的

  10. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

随机推荐