缩放 UIImageView 并在缩放范围内移动
Posted
技术标签:
【中文标题】缩放 UIImageView 并在缩放范围内移动【英文标题】:Zooming UIImageView and moving inside the zoom 【发布时间】:2013-12-19 00:49:30 【问题描述】:在我的 UIScrollview 中,我有一个黑色背景的 UIImageView。在它里面有另一个 UIImageView,里面有一个 UIImage,我使用这个代码来启用缩放:
fullImageView = [[UIView alloc] initWithFrame:CGRectMake(0,0,screenWidth,screenHeight)];
fullImageView.backgroundColor = [UIColor blackColor];
[fullImageView addSubview:copyImageToShowImageView];
zoomFullImageScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,screenWidth,screenHeight)];
[zoomFullImageScrollView addSubview:fullImageView];
[self.view addSubview:zoomFullImageScrollView];
UIPinchGestureRecognizer *twoFingerTapRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapImage:)];
[copyImageToShowImageView addGestureRecognizer:twoFingerTapRecognizer];
//Then..
- (void)doubleTapImage:(UIPinchGestureRecognizer *)gesture
if (gesture.state == UIGestureRecognizerStateEnded
|| gesture.state == UIGestureRecognizerStateChanged)
CGFloat currentScale = copyImageToShowImageView.frame.size.width / copyImageToShowImageView.bounds.size.width;
CGFloat newScale = currentScale * gesture.scale;
NSLog(@"gesture.scale = %f", currentScale * gesture.scale);
if (newScale < 1)
newScale = 1;
if (newScale > 100)
newScale = 100;
CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale);
copyImageToShowImageView.transform = transform;
gesture.scale = 1;
copyImageToShowImageView.transform = CGAffineTransformTranslate(copyImageToShowImageView.transform, newScale, newScale);
zoomFullImageScrollView.contentSize=CGSizeMake(copyImageToShowImageView.frame.size.width, copyImageToShowImageView.frame.size.height);
//and the methods:
- (void)viewDidLoad
NSLog(@"super");
[super viewDidLoad];
zoomFullImageScrollView.minimumZoomScale=0.5;
zoomFullImageScrollView.maximumZoomScale=6.0;
zoomFullImageScrollView.delegate=self;
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
return copyImageToShowImageView;
此代码有效,但存在问题,因为滚动视图内容大小与 UIImageView 大小不同。也许他们是平等的,但不是一致的。然后我希望当用户进行缩放时,图像会在那里缩放,并不总是从中心缩放,但这并不重要..
我希望我自己解释一下。
我该怎么办?
【问题讨论】:
【参考方案1】:如果你把你的 UIImageView 放在 UIScrollView 中,它会让你的生活更轻松。
UIScrollView 委托实现特定于 Zoom 的方法。而且因为它是可滚动的,所以您可以在图像中“移动”。
在 UIScrollView 的documentation 中,您可以找到与缩放特别相关的好示例。
【讨论】:
我更新了我的答案,因为我在使用滚动视图时遇到了另一个问题 检查this 解决方案。此类别可以缩放到特定点。我认为您不需要应用正在应用的那些转换。 好的,我用 UIScrollView 及其委托方法解决了,谢谢!以上是关于缩放 UIImageView 并在缩放范围内移动的主要内容,如果未能解决你的问题,请参考以下文章