gpt4 book ai didi

UIScrollView contentLayoutGuide 和缩放居中

转载 作者:行者123 更新时间:2023-12-04 02:30:16 29 4
gpt4 key购买 nike

这里要解决的问题是如何在保持居中的同时放大 UIScrollView。如果你不采取某种预防措施,默认是当我们缩小时,缩放的 View 会向上滑动到 ScrollView 的左上角,如下所示:

enter image description here

那么如何防止这种情况,并在我们缩放时将缩放 View 保持在中心?正如您可能知道的那样,有一些传统的方法可以通过弄乱 ScrollView 的布局来处理这个问题,正如 Josh 和 Eliza 在精彩的经典 WWDC video 104 from 2010 中所描述的那样。 .这可以通过使用委托(delegate)或子类化 UIScrollView 来完成,并给出所需的结果:

enter image description here

现在是 WWDC 2017 视频 201 (https://developer.apple.com/videos/play/wwdc2017/201/?time=1496),并且 Eliza 声称新的 (iOS 11) contentLayoutGuide以一种新的方式解决了缩放问题,同时保持居中:她说将内容 View 居中在内容布局指南的中心。

但她没有表现出来。当我自己尝试时,我发现它并没有解决问题。我放大得很好,但是当缩小时,缩放比例小于 1,内容 View 会像往常一样向上移动到左上角。

有没有人弄清楚视频中的这种说法实际上意味着什么? iOS 11 如何比过去更容易居中缩放?

编辑 实际上,我收到了来自 Apple 的一个示例项目,以响应我的错误报告,他们声称说明了如何解决这个问题,但事实并非如此!所以我得出结论,即使是苹果也不知道他们在说什么。

最佳答案

View 转到左上角,因为未定义 ScrollView 的 contentSize。在 iOS 11 中使用新的 Auto Layout guides 时,仍然需要定义 contentSize。

添加以下约束:

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

当我有一个具有固定宽度/高度和以下附加约束的 contentView 时,这对我有用:
//  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)

关于UIScrollView contentLayoutGuide 和缩放居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46010019/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com