gpt4 book ai didi

ios - 设置 UIScrollView 缩放比例以适应屏幕

转载 作者:技术小花猫 更新时间:2023-10-29 11:12:29 25 4
gpt4 key购买 nike

我的观点是复制许多使用照片的应用程序的行为,当 UIScrollViewUIImageView 被呈现时,它使图像适合屏幕大小,即使这样图像较小。

我确定这不应该通过 UIImageView 框架完成,而应该由 UIScrollView 操作,但是如何...?


在我的代码中,我有一个名为 updateZoom 的方法,它计算 minimumZoomScale 值并将该值分配给 zoomScale 属性。我想这是进行数学运算和手动计算 zoomScale 的正确位置。

这是方法:

- (void)updateZoom {
float minZoom = MIN(self.view.bounds.size.width / self.imageView.image.size.width, self.view.bounds.size.height / self.imageView.image.size.height);

if (minZoom > 1) {
minZoom = 1;
}

self.scrollView.minimumZoomScale = minZoom;
self.scrollView.zoomScale = minZoom;
}

我希望有人能告诉我如何设置 zoomScale 以适应 UIScrollView 边界。

最佳答案

上述解决方案有效,但我一直在努力理解其中的原因。我想分享这两篇文章,我发现它们对正确设置 mininumZoomScale 并使其与 iOS8/XCode 6 一起工作非常有帮助。

首先,要使 ScrollView 在 iOS8 上正常工作,需要您从一开始就正确设置约束。其他发帖人建议,我同意,您的 ScrollView 应该只有一个内容 View 。将所有其他 View 嵌入到一个内容 View 中很好,但您不想将 ScrollView 约束设置为一堆小 View 。

将顶部、前导、尾部和底部约束连接到内容 View (在我的例子中是 UIImageView)的 ScrollView ,常量为 0。这会将内容 View 的边缘设置为 ScrollView 。

接下来,使用 Equal Width 和 Equal Height 约束将内容 View 的大小设置为 ScrollView 。您不能在内容 View 中使用 Fixed Width 和 Fixed Height,因为缩放不起作用,您也不能自己管理大小。如果没有这些限制,iOS8 会在您有机会产生一些奇怪的伪像之前将大小设置为 (0,0)。有了这些约束,在方向方法中调用 updateZoom 方法就可以了。在 iOS7 中,在 didRotateFromInterfaceOrientation 中调用它。在 iOS8 中从 viewWillTransitionToSize 调用它。您需要更新代码以传入新尺寸。

非常感谢 Natasha The Robot 的约束解决方案:http://natashatherobot.com/ios-autolayout-scrollview/

当您调用 updateZoom 方法来调整您的最小值时,您还应该检查您当前的 zoomScale 是否小于您的 minimumZoomScale,如果是则重置它。否则您不应该重置 zoomScale,因为当方向改变时,这会成为您用户的另一种疑惑表情。

至于其余部分以及为什么数学有效,objc.io 的 Joe Conway 在这篇关于 UIScrollView 的边界与框架的精彩文章中进行了阐述:http://www.objc.io/issue-3/scroll-view.html

感谢以上两位和发帖人。

-(void)updateZoom {
self.scrollView.minimumZoomScale = MIN(self.scrollView.bounds.size.width / self.imageView.image.size.width, self.scrollView.bounds.size.height / self.imageView.image.size.height);

if (self.scrollView.zoomScale < self.scrollView.minimumZoomScale)
self.scrollView.zoomScale = self.scrollView.minimumZoomScale;
}

关于ios - 设置 UIScrollView 缩放比例以适应屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927402/

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