[IOS]图片的旋转和缩放
  JDh7sMsPQI0Y 2023年11月02日 17 0


实现图片的旋转和缩放也是IOS开发中一个比较常见的技术点,下面我们来一起学习,这功能如何实现?

效果图:


[IOS]图片的旋转和缩放_#import

  

[IOS]图片的旋转和缩放_自定义_02


运行的时候按住alt键能够实现图片的伸缩


ViewController.h:


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
{
    float scale;
    float prviousScale;  //放大倍数
    float rotation;
    float previousRotation; //旋转角度
}
@property (retain, nonatomic) IBOutlet UIImageView *otherImage;

@end


ViewController.m:


#import "ViewController.h"
#import "MyGestureRecongnizer.h"  //自定义手势
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    prviousScale=1;
	
    //缩放手势
    UIPinchGestureRecognizer *pin=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(doPinch:)];
    pin.delegate=self;
    [self.otherImage addGestureRecognizer:pin];
    
    //旋转事件
    UIRotationGestureRecognizer *rotaion=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(doRotate:)];
    rotaion.delegate =self;
    [self.otherImage addGestureRecognizer:rotaion];
    
    
    //添加自定义手势(点击到X大于200的地方相应)
    MyGestureRecongnizer *my = [[MyGestureRecongnizer alloc] initWithTarget:self action:@selector(fun:)];
    [self.view addGestureRecognizer:my];
    
    
}
//自定义手势触发事件
-(void)fun:(MyGestureRecongnizer *)my
{
    NSLog(@"OK");
}

//允许同时调用两个手势,如果是no的话就只能调用一个手势
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

-(void)transfromImageView
{
    CGAffineTransform t=CGAffineTransformMakeScale(scale*prviousScale, scale*prviousScale);
    t=CGAffineTransformRotate(t, rotation+previousRotation);
    self.otherImage.transform=t;
}

//缩放方法
-(void)doPinch:(UIPinchGestureRecognizer *)gesture
{
    scale=gesture.scale; //缩放倍数
    [self transfromImageView];
    if (gesture.state==UIGestureRecognizerStateEnded) {
        prviousScale=scale*prviousScale;
        scale=1;
    }
}

//旋转方法
-(void)doRotate:(UIRotationGestureRecognizer *)gesture
{
    rotation=gesture.rotation; //旋转角度
    [self transfromImageView];
    if (gesture.state==UIGestureRecognizerStateEnded) {
        previousRotation=rotation+previousRotation;
        rotation=0;
    }
}


- (void)dealloc {
    [_otherImage release];
    [super dealloc];
}
@end





【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

JDh7sMsPQI0Y