我有一個UIImageView
。我需要捏縮放。捏放大圖像查看器
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 90, 320, 38)];
[imageView setImage:[UIImage imageNamed:@"accesspanel.png"]];
[self.view addSubview: imageView];
我有一個UIImageView
。我需要捏縮放。捏放大圖像查看器
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 90, 320, 38)];
[imageView setImage:[UIImage imageNamed:@"accesspanel.png"]];
[self.view addSubview: imageView];
你可以在scrollview中添加imageview,並可以使用Scrollview代理來實現此目的
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView.minimumZoomScale=0.5;
self.scrollView.maximumZoomScale=6.0;
self.scrollView.contentSize=CGSizeMake(1280, 960);
self.scrollView.delegate=self;
}
首先--->添加縮放手勢,以你的形象景觀 - :
UIPinchGestureRecognizer *pgr = [[UIPinchGestureRecognizer alloc]
initWithTarget:self action:@selector(handlePinchGesture:)];
pgr.delegate = self;
[imageView addGestureRecognizer:pgr];
二--->實施捏合手勢 - :
- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {
if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
// Reset the last scale, necessary if there are multiple objects with different scales.
lastScale = [gestureRecognizer scale];
}
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||
[gestureRecognizer state] == UIGestureRecognizerStateChanged) {
CGFloat currentScale = [[[gestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom.
const CGFloat kMaxScale = 2.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = 1 - (lastScale - [gestureRecognizer scale]); // new scale is in the range (0-1)
newScale = MIN(newScale, kMaxScale/currentScale);
newScale = MAX(newScale, kMinScale/currentScale);
CGAffineTransform transform = CGAffineTransformScale([[gestureRecognizer view] transform], newScale, newScale);
[gestureRecognizer view].transform = transform;
lastScale = [gestureRecognizer scale]; // Store the previous. scale factor for the next pinch gesture call
}
}
謝謝,但一個錯誤即將到來。錯誤是(用戶未聲明的標識符'最後一個比例')我應該怎麼做。 – janagowtham
在.m文件中聲明全局變量「lastScale」,如CGFloat lastScale; – Vizllx
記住,你必須設置imageview用戶intraction真[imageView setUserInteractionEnabled:YES]; – nova
pinchGestureRecognizer=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchGestureDetected:)];
[pinchGestureRecognizer setDelegate:self];
[_third_imagevie addGestureRecognizer:pinchGestureRecognizer];
//
- (void)pinchGestureDetected:(UIPinchGestureRecognizer *)recognizer
{
UIGestureRecognizerState state = [recognizer state];
if (state == UIGestureRecognizerStateBegan || state == UIGestureRecognizerStateChanged)
{
CGFloat scale = [recognizer scale];
[recognizer.view setTransform:CGAffineTransformScale(recognizer.view.transform, scale, scale)];
[recognizer setScale:1.0];
}
}
的可能重複的[如何放大/縮小一個的UIImage當對象用戶捏屏幕?](http://stackoverflow.com/問題/ 500027 /如何縮小 - 出 - - - uiimage - 對象 - 當用戶捏屏幕) – CRDave
http://stackoverflow.com/questions/19840507/how-i-can-pinch-zoom -uiimage-without-use-uiimageview – CRDave
http://stackoverflow.com/questions/21579882/ios-show-uiimage-full-screen-with-zooming-pinc h和雙擊啓用 – CRDave