UIScrollView 作为辅助视图的问题
Posted
技术标签:
【中文标题】UIScrollView 作为辅助视图的问题【英文标题】:Troubles with UIScrollView as Secondary View 【发布时间】:2017-09-01 03:13:35 【问题描述】:我已经为此工作了几个小时,但我无法完全从我的 UIScrollView
作为次要视图中获得所需的行为。我有一个名为 newDogView
的辅助视图,其中包含 3 个堆栈视图。我添加newDogView
并在代码中设置它的约束。
我的意图是将newDogView
(即960x320)呈现为具有水平滚动功能的较小视图(320x320)。当前结果是添加了视图,但仍保持 960x320。我认为混淆要么来自堆栈视图,要么来自辅助视图,而不是视图控制器内部。
以下是相关代码:
override func viewWillLayoutSubviews()
newDogView.translatesAutoresizingMaskIntoConstraints = false
newDogScrollView.translatesAutoresizingMaskIntoConstraints = false
newDogScrollView.heightAnchor.constraint(equalToConstant: 320.0).isActive = true
newDogScrollView.widthAnchor.constraint(equalToConstant: 960.0).isActive = true
newDogScrollView.contentSize = CGSize(width: 320, height: 320)
newDogView.heightAnchor.constraint(equalToConstant: 320.0).isActive = true
newDogView.widthAnchor.constraint(equalToConstant: 320.0).isActive = true
newDogView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
newDogView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
我不确定是否应该设置 newDogView 的高度和宽度。
这是我当前的视图层次结构和警告:
这是我目前的故事板:
我在Content View
和Scroll View
的所有方面都设置了约束。
以下是我的 iPhone 上当前的视图:
【问题讨论】:
如果你设置了高度和宽度,那么行为是什么? 您需要确保您有约束来隐式或显式设置滚动视图的大小,并且您需要设置滚动视图的内容大小属性,以便正确调整内容的大小。跨度> @Paulw11 请查看我的更新代码和编辑。 你为什么在这里设置920,你不应该设置320吗?newDogView.widthAnchor.constraint(equalToConstant: 960.0).isActive = true @3stud1ant3 我更新了代码和截图。仍然不是所需的行为。视图不滚动。 【参考方案1】:尝试从
更改内容大小CGSize(width: 320, height: 320)
到
CGSize(width: 960, height: 320)
也要改变
newDogView.widthAnchor.constraint(equalToConstant: 960.0).isActive = true
到
newDogView.widthAnchor.constraint(equalToConstant: 320.0).isActive = true
【讨论】:
UIScrollViews 看起来确实很巧妙。在我看来,视图的宽度应该是您想要的可见窗口。并且内容大小应该是滚动视图内的东西的总宽度/高度。整洁的!感谢您的帮助。 @CodyPotter 是的,您理解正确,我们随时欢迎您,干杯以上是关于UIScrollView 作为辅助视图的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用主 iPhone 视图之外的 UI 元素在 Interface Builder 中设置 UIScrollView?