1.创建UIImageView打开交互
UIImageView * imageV= [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kScreen
idth,
kScreenHeight)];
imageV.contentMode = UIViewContentModeScaleAspectFit ;//UIView的填充模式
imageV.userInteractionEnabled = YES ;//打开交互
//手势
UIPinchGestureRecognizer * pin =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(scaleImage:)];
[imageV addGestureRecognizer:pin];
2.实现放大缩小scaleImage函数
-(void)scaleImage:(UIPinchGestureRecognizer *)sender{
CGFloat value;
if (sender.state == UIGestureRecognizerStateEnded) {
_lastScale = 1.0 ;//在手势结束时候 要重置为1.0的,否则下次变化会大小突变
[UIView animateWithDuration:0.25 animations:^{
// sender.view.frame = CGRectMake(kScreenWidth * sender.view.tag, 0, kScreenWidth, kScreenHeight);
}];
return ;
}
else if(sender.state == UIGestureRecognizerStateChanged) {
double scaleValue = 1.0 + sender.scale - _lastScale;
;
value = scaleValue ;
CGAffineTransform treans = (sender.view.transform);
CGAffineTransform transNew =CGAffineTransformScale( treans, value, value);
sender.view.transform = transNew ;
_lastScale = sender.scale ;
// NSLog(@"value:%f now:%f last:%f",sender.scale,scaleValue,_lastScale);
}
// UIScrollView * superView =(UIScrollView*) sender.view.superview;
// superView.contentSize= CGSizeMake(getWidth(sender.view.frame), getHeight(sender.view.frame));
}
3.拖动
UIPanGestureRecognizer * pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
[imageV addGestureRecognizer:pan];
4.拖动实现
-(void)pan:(UIPanGestureRecognizer *)sender{
CGPoint location = [sender translationInView:sender.view];
sender.view.transform = CGAffineTransformTranslate(sender.view.transform ,location.x , location.y);
[sender setTranslation:CGPointZero inView:sender.view];
}
Demo地址
里边有可以直接用的类似微信的图片点击效果,可以看看。