UIScrollView 禁止縮放,因為UIScrollView 沒有禁止縮放的屬性,這邊整理一下大概的幾種方法
1、檢查設(shè)置minimumZoomScale
和maximumZoomScale
;根據(jù)the docs:
maximumZoomScale must be greater than minimumZoomScale for zooming to be enabled
因此,將值設(shè)置為相同應(yīng)禁用縮放
-(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或更高版本中調(diào)用此方法,否則系統(tǒng)會將其重置為已啟用。
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配置時設(shè)置。 這使我能夠設(shè)置/詢問是否啟用了縮放。
myViewController.zoomEnabled = YES;
myViewController.isZoomEnabled;
原貼地址:https://oomake.com/question/302778如有侵權(quán),請及時告知,會立即刪帖。