0

我从远程服务器获取图像并在 UIImageView 中显示,然后对该图像视图进行捏合手势。但是当我捏图像时,我正在拉伸图像。它正在失去原始分辨率和质量。

mmageView=[[UIImageView alloc]initWithFrame:CGRectMake(50,50,150,150)];
 [self.view addSubview:mmageView];

 UIPinchGestureRecognizer *dbpinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(dbhandlePinch:)];
 [mmageView addGestureRecognizer:dbpinchGesture];

UIPinchGesture:

 -(void)dbhandlePinch:(UIPinchGestureRecognizer*)recognizer {

 if([recognizer state] == UIGestureRecognizerStateBegan) {
 // Reset the last scale, necessary if there are multiple objects with different scales
 LastScale = [recognizer scale];
 }

 if ([recognizer state] == UIGestureRecognizerStateBegan ||
 [recognizer state] == UIGestureRecognizerStateChanged) {

 CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];

 // Constants to adjust the max/min values of zoom
 // const CGFloat kMaxScale = 2.0;
 const CGFloat kMinScale = 0.8;

 CGFloat newScale = 1 -  (LastScale - [recognizer scale]);
 // newScale = MIN(newScale, kMaxScale / currentScale);
 newScale = MAX(newScale, kMinScale / currentScale);
 CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale);
 [recognizer view].transform = transform;

 LastScale = [recognizer scale];  // Store the previous scale factor for the next pinch gesture call
 }

 }
4

2 回答 2

1

对于捏缩放,将您的 imageView 添加到 scrollView 并导入UIScrollViewDelegate

- (void)viewDidLoad
{
    [super viewDidLoad];

    //for pinch gesture
    _scrollView.minimumZoomScale = 0.5;
    _scrollView.maximumZoomScale = 6.0;
    _scrollView.contentSize = CGSizeMake(_imageView.frame.size.width, _imageView.frame.size.height);
    _scrollView.delegate = self;

}
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return _imageView;
}
于 2014-04-02T04:54:02.030 回答
0

UIScrollView使支持缩放手势变得容易。Apple 文档中更好的解决方案。

于 2014-04-02T06:17:51.973 回答