在我的 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;
}
此代码有效,但存在一个问题,因为 ScrollView 内容大小与 UIImageView 大小不同。也许他们是平等的但不一致。然后我希望当用户进行缩放时,图像在那里缩放,并不总是从中心缩放,但这并不重要..
我希望我自己解释清楚了。
我该怎么办?
最佳答案
如果你把 UIImageView 放在 UIScrollView 中,它会让你的生活更轻松。
UIScrollView 委托(delegate)实现特定于 Zoom 的方法。而且由于它是可滚动的,您可以在图像中“移动”。
在UIScrollView的documentation中您可以找到与缩放专门相关的好例子。
关于ios - 缩放 UIImageView 并在缩放范围内移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20671540/