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 ViewScroll 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?

UIScrollVIew 中的 UIView 不更新视图

UIScrollView 作为 UISplitViewController 中的根视图

UIScrollview 作为主视图 IOS 8

UI Scroll View 内的视图上的触摸事件

UIScrollView 不会作为子视图在里面滚动