我想在UIScrollView
被缩放到最小缩放限制并即将动画返回时得到通知,但我发现这很困难。有没有办法只使用delegate
方法来实现这个功能,或者我需要重写UIScrollView
的触摸处理?
我想在UIScrollView
被缩放到最小缩放限制并即将动画返回时得到通知,但我发现这很困难。有没有办法只使用delegate
方法来实现这个功能,或者我需要重写UIScrollView
的触摸处理?
使用 scrollViewDidZoom:
,并检查 scrollView.zoomBouncing == YES
。然后使用 zoomScale
确定视图反弹的方向。
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if (scrollView.zoomBouncing) {
if (scrollView.zoomScale == scrollView.maximumZoomScale) {
NSLog(@"Bouncing back from maximum zoom");
}
else
if (scrollView.zoomScale == scrollView.minimumZoomScale) {
NSLog(@"Bouncing back from minimum zoom");
}
}
}
在Swift 4.0中:
func scrollViewDidZoom(_ scrollView: UIScrollView) {
if scrollView.zoomScale == scrollView.minimumZoomScale
{
print("zoomed out")
}
}
当用户完成缩放且缩放比例达到最小值时,即滚动视图完全缩小时,将会准确地调用此函数。
UIPinchGestureRecognizer
来完成它。-(void)viewDidLoad{
UIPinchGestureRecognizer *gestureRecognizer =
[[[UIPinchGestureRecognizer alloc] initWithTarget:self
action:@selector(pinched:)]
autorelease];
gestureRecognizer.delegate=self;
[self.scrollView addGestureRecognizer:gestureRecognizer];
//your code
}
-(void)pinched:(UIPinchGestureRecognizer*)gestureRecognizer{
if(gestureRecognizer.state==UIGestureRecognizerStateEnded){
//pinch ended
NSLog(@"scale: %f",scrollView.zoomScale);
}
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
if !scrollView.zooming && scrollView.zoomScale < 0.6 {do something}
- osrl