UIScrollView を使用しているときにズームを一時的にオフにする方法を知っている人はいますか?
以下を使用してスクロールを無効にできることがわかりました。
self.scrollView.scrollEnabled = false;
しかし、ズーム用の同様のコマンドは見当たりません。何かご意見は?
UIScrollView を使用しているときにズームを一時的にオフにする方法を知っている人はいますか?
以下を使用してスクロールを無効にできることがわかりました。
self.scrollView.scrollEnabled = false;
しかし、ズーム用の同様のコマンドは見当たりません。何かご意見は?
ユーザーがジェスチャでズームする機能を無効にしたい場合、iOS 5 以降ではピンチ ジェスチャを無効にできます。これにより、コードからスクロールビューを制御できます...
scrollView.pinchGestureRecognizer.enabled = NO;
パンも同様に...
scrollView.panGestureRecognizer.enabled = NO;
これは- (void)viewDidAppear:(BOOL)animated
後で呼び出す必要があります。そうしないと、システムによって有効にリセットされます。
Swift 4.x 以降:
imageZoomView.pinchGestureRecognizer?.isEnabled
=偽/真
上記の fbrereto のアドバイスに従って、lockZoom と unlockZoom の 2 つの関数を作成しました。ズームをロックするときに、最大ズーム スケールと最小ズーム スケールを変数にコピーし、最大ズーム スケールと最小ズーム スケールを 1.0 に設定しました。ズームのロックを解除すると、プロセスが逆になります。
-(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;
}
また、UIScrollViewDelegate のズーム ビューとして "nil" を返すこともできます。
- (UIView *) viewForZoomingInScrollView:(UIScrollView *) scrollView
{
return canZoom?view:nil;
}
設定minimumZoomScale
を確認してくださいmaximumZoomScale
。ドキュメントによると:
maximumZoomScale
minimumZoomScale
ズームを有効にするには、よりも大きくする必要があります。
したがって、値を同じに設定すると、ズームが無効になります。
ここでは、スクロールビューでズームを停止するための私のソリューションです。
self.scrollView.minimumZoomScale=self.scrollView.maximumZoomScale;
これは非常に古い質問であることは知っていますが、目的のために少し変更しました。
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;
スクロール ビューの 2 本指とダブルタップをオフにする必要があります
self.scrollView.delegate = self
と
extension YourViewController: UIScrollViewDelegate {
func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
scrollView.pinchGestureRecognizer?.isEnabled = false
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return nil
}
}
ピンチ ジェスチャによるズームのみを無効にしたい場合は、以下のコードでうまくいきます。
scrollView.pinchGestureRecognizer?.requireGestureRecognizerToFail(scrollView.panGestureRecognizer)