2013-12-19 97 views
0

在我的UIScrollview我有一个UIImageView黑色背景。里面它有一个与里面的UIImage另一个的UIImageView和我使用此代码,以使变焦:缩放UIImageView和移动缩放

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委托实现特定于缩放的方法。而且因为它是可滚动的,所以你可以在图像中“移动”。

在UIScrollView的documentation中,您可以找到与缩放特别相关的很好示例。

+0

我更新我的答案,因为我有另一个问题,使用滚动视图 – lubilis

+0

检查[this](http://www.timoliver.com.au/2012/01/14/zooming-to-a-point-in-uiscrollview/ )解决方案。此类别可以缩放到特定点。我认为你不需要应用那些正在应用的转换。 –

+0

好吧,我解决了与UIScrollView及其委托方法,谢谢! – lubilis