关闭 UIScrollView 中的缩放
有谁知道使用 UIScrollView 时暂时关闭缩放的方法吗?
我发现您可以使用以下命令禁用滚动:
self.scrollView.scrollEnabled = false;
但我没有看到类似的缩放命令。有什么想法吗?
Does anyone know a way to temporarily turn off zooming when using a UIScrollView?
I see that you can disable scrolling using the following:
self.scrollView.scrollEnabled = false;
but I'm not seeing a similar command for zooming. Any thoughts?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
按照上面 fbrereto 的建议,我创建了两个函数 lockZoom 和unlockZoom。锁定缩放时,我将最大和最小缩放比例复制到变量,然后将最大和最小缩放比例设置为 1.0。解锁变焦只是反转该过程。
Following fbrereto's advice above, I created two functions lockZoom and unlockZoom. When locking Zoom i copied my max and min zoom scales to variables then set the max and min zoom scale to 1.0. Unlocking zoom just reverses the process.
您也可以在 UIScrollViewDelegate 中返回“nil”作为缩放视图:
Also you can return "nil" as zooming view in UIScrollViewDelegate:
检查设置
minimumZoomScale
和maximumZoomScale
;根据 文档:因此,将值设置为相同应该禁用缩放。
Check setting
minimumZoomScale
andmaximumZoomScale
; According to the docs:So, setting the values to be the same should disable zooming.
我尝试将
UIScrollView
的minimumZoomScale
和maximumZoomScale
属性设置为1
或isMultipleTouchEnabled
属性UIView
的false
或从UIScrollViewDelegate
的viewForZooming(in:)
返回nil
但没有一个起作用。就我而言,经过多次尝试和错误,以下内容适用于我的情况[在 iOS 10.3 上测试]:I have tried setting
minimumZoomScale
andmaximumZoomScale
properties ofUIScrollView
to1
orisMultipleTouchEnabled
property ofUIView
tofalse
or returnnil
fromviewForZooming(in:)
ofUIScrollViewDelegate
but none worked. In my case, after several trial and error, the following works in my case [Tested on iOS 10.3]:我知道这是一个非常古老的问题,但我出于我的目的做了一些小小的改变。
我希望能够轻松判断缩放是否实际上已启用/禁用,而不依赖于
scrollView.minimumZoomScale ==scrollView.maximumZoomScale
之间的比较,这可能无法反映缩放是否实际上已启用/禁用。所以我这样做了
self.minimumZoomScale
和self.maximumZoomScale
的值是在配置UIScrollView
时设置的。这使我能够设置/询问是否启用缩放。
I know this is a really old question but I made a slight variation for my purposes.
I wanted to be able to easily tell if the zooming was in fact enabled/disabled without relying on a comparison between
scrollView.minimumZoomScale == scrollView.maximumZoomScale
, which could possibly not reflect whether zooming was actually enabled/disabled.So I did this
The values for
self.minimumZoomScale
andself.maximumZoomScale
are set at the time theUIScrollView
is configured.This gives me the ability to set/ask if zooming is enabled.
在这里,我的解决方案是停止缩放滚动视图。
here, my solution for stop zooming on scrollview.
Swift 3 版本:
请注意,
doubleTapGestureRecognizer
应该是一个实例变量。它应该类似于:Swift 3 Version:
Note that
doubleTapGestureRecognizer
should be an instance variable. It should be similar to:您需要关闭两根手指和双击滚动视图
并且
You need to turn off Two Fingers and Double Tap of scroll view
And
如果您只想禁用捏合手势缩放,下面的代码可以解决问题。
If you want to disable only zooming with pinch gesture, below code does the trick.
如果您想禁用用户通过手势进行缩放的功能,那么在 iOS 5 及更高版本中您可以禁用捏合手势。这仍然允许您通过代码控制滚动视图...
与平移类似...
这必须在
- (void)viewDidAppear:(BOOL)animated 或更高版本中调用,否则系统会重置它启用。
Swift 4.x 及更高版本:
imageZoomView.pinchGestureRecognizer?.isEnabled
= false / trueIf you want to disable the user's ability to zoom through gestures then in iOS 5 and above you can disable the pinch gesture. This still allows you to control the scroll view from code...
similarly for pan...
This must be called in
- (void)viewDidAppear:(BOOL)animated
or later as otherwise the system resets it to enabled.Swift 4.x and above:
imageZoomView.pinchGestureRecognizer?.isEnabled
= false / true