2017-09-02 66 views
2

正如您可能知道的那样,传统的缩放方式是在UIScrollView中居中对齐,这是混乱了滚动视图的布局。这可以通过使用委托或UIScrollView的子类来完成。UIScrollView contentLayoutGuide and zooming centered

在WWDC 2017年视频201(https://developer.apple.com/videos/play/wwdc2017/201/)有一个要求,新(iOS版11)contentLayoutGuide解决,而以新的方式留集中放大的问题:他们说在内容布局的中心到中心内容视图指南。

我这样做并没有解决问题。我缩放得很好,但是当缩放比例小于1时,内容视图会像往常一样移动到左上角。

有没有人知道视频中的这个声明究竟意味着什么? iOS 11如何使缩放比以往更容易?

编辑我实际收到的样本项目从苹果在回应我的错误报告,说明如何解决这个问题,他们声称,它没有!所以我得出结论,即使苹果公司也不知道他们在这里谈论什么。

+0

我看到我可以通过将可伸缩视图的中心固定到“frameLayoutGuide”的中心来实现居中缩放,但这并不能解决问题,因为结果显然不是可滚动的。 – matt

+0

你有没有想过这个?我正在努力解决同样的问题,并找不到任何人得到这个工作。 – IMcD23

+0

@ IMcD23这不是一个真正的问题;在保持中心位置的同时,有着悠久的缩放方式。在我的问题中,问题是视频中声称有一些新的方法可以实现它,涉及'contentLayoutGuide';我仍然没有发现任何迹象支持这一说法。 – matt

回答

-1

由于未定义滚动视图的contentSize,因此视图会左上角。在iOS 11中使用新的自动布局指南时,仍然需要定义contentSize。

添加以下限制:

scrollView.contentLayoutGuide.widthAnchor.constraint(equalTo: scrollView.frameLayoutGuide.widthAnchor), 
scrollView.contentLayoutGuide.heightAnchor.constraint(equalTo: scrollView.frameLayoutGuide.heightAnchor) 

这个工作对我来说,当我有一个固定的宽度/高度内容查看和下面的附加限制:

// give the centerView explicit height and width constraints 
centerView.widthAnchor.constraint(equalToConstant: 500), 
centerView.heightAnchor.constraint(equalToConstant: 500), 

// pin the center of the centerView to the center of the scrollView's contentLayoutGuide 
centerView.centerXAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerXAnchor), 
centerView.centerYAnchor.constraint(equalTo: scrollView.contentLayoutGuide.centerYAnchor) 
+0

我试过你的代码(其实我已经尝试过了,但是我复制了它并粘贴了它,这样就没有错误),它不起作用:当我们缩小时,我们不会保持居中,我们不会也不会连贯地滚动。一定有什么事情你不告诉我。你可以在GitHub上发布演示吗?谢谢。 – matt