UIScrollView 禁止缩放,因为UIScrollView 没有禁止缩放的属性,这边整理一下大概的几种方法
1、检查设置minimumZoomScale
和maximumZoomScale
;根据the docs:
maximumZoomScale must be greater than minimumZoomScale for zooming to be enabled
因此,将值设置为相同应禁用缩放
-(void)lockZoom
{
maximumZoomScale = self.scrollView.maximumZoomScale;
minimumZoomScale = self.scrollView.minimumZoomScale;
self.scrollView.maximumZoomScale = 1.0;
self.scrollView.minimumZoomScale = 1.0;
}
-(void)unlockZoom
{
self.scrollView.maximumZoomScale = maximumZoomScale;
self.scrollView.minimumZoomScale = minimumZoomScale;
}
2、您还可以在UIScrollViewDelegate中将“nil”作为缩放视图返回:
- (UIView *) viewForZoomingInScrollView:(UIScrollView *) scrollView
{
return canZoom?view:nil;
}
3、如果你只想禁用缩放手势缩放,下面的代码可以解决问题
scrollView.pinchGestureRecognizer?.requireGestureRecognizerToFail(scrollView.panGestureRecognizer)
4、如果要禁用用户缩放手势的功能,那么在iOS 5及更高版本中,您可以禁用捏合手势。这仍然允许您从代码控制滚动视图...
scrollView.pinchGestureRecognizer.enabled = NO;
同样适用
scrollView.panGestureRecognizer.enabled = NO;
必须在- (void)viewDidAppear:(BOOL)animated或更高版本中调用此方法,否则系统会将其重置为已启用。
5、我知道这是一个非常古老的问题,但我的目的略有不同。 我希望能够轻松判断是否实际启用/禁用了缩放,而不依赖于scrollView.minimumZoomScale == scrollView.maximumZoomScale之间的比较,这可能无法反映缩放是否实际启用/禁用。 所以我这样做了
// .h
@property (assign, nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;
// .m
@synthesize zoomEnabled = _zoomEnabled;
- (void)setZoomEnabled:(BOOL)zoomEnabled;
{
_zoomEnabled = zoomEnabled;
UIScrollView *scrollView = self.scrollView;
if (zoomEnabled) {
scrollView.minimumZoomScale = self.minimumZoomScale;
scrollView.maximumZoomScale = self.maximumZoomScale;
} else {
scrollView.minimumZoomScale = 0.0f;
scrollView.maximumZoomScale = 0.0f;
}
}
self.minimumZoomScale和self.maximumZoomScale的值在UIScrollView配置时设置。 这使我能够设置/询问是否启用了缩放。
myViewController.zoomEnabled = YES;
myViewController.isZoomEnabled;
原贴地址:https://oomake.com/question/302778如有侵权,请及时告知,会立即删帖。