实现图片(UIImage)的水平翻转(镜像),垂直翻转

实现图片(UIImage)的水平翻转(镜像),垂直翻转
有时候我们需要对图片(UIImage)进行垂直翻转(上下翻转),或者水平翻转处理(即镜像处理)。如下图:


截屏2020-09-22 下午4.01.20.png
截屏2020-09-22 下午4.33.15.png
截屏2020-09-22 下午4.36.15.png

1,实现原理
UIImage 有个属性叫 imageOrientation,它是一个枚举变量。主要作用是控制image的绘制方向,共有以下8种方向:

typedef NS_ENUM(NSInteger, UIImageOrientation) {
    UIImageOrientationUp,            // 默认方向
    UIImageOrientationDown,          // 180°旋转
    UIImageOrientationLeft,          // 逆时针旋转90°
    UIImageOrientationRight,         // 顺时针旋转90°
    UIImageOrientationUpMirrored,    // 垂直翻转(向上)
    UIImageOrientationDownMirrored,  // 垂直翻转(向下)
    UIImageOrientationLeftMirrored,  // 水平翻转(向左)
    UIImageOrientationRightMirrored, // 水平翻转 (向右)
};

那么我们只需要通过改变 UIImage 的 orientation,这样图片显示出来的时候,图片容器会根据新的这个 orientation 属性进行显示。从而实现水平翻转或者垂直翻转。

2,垂直翻转(上下翻转)

     UIImageView *backImage = [[UIImageView alloc]init];
    backImage.frame = CGRectMake(0, -300, KSCREEN_WIDTH, 300);
    backImage.image = [UIImage imageNamed:@"你图片的名称"];
    
    UIImage *flipImage = [UIImage imageWithCGImage:backImage.image.CGImage scale:backImage.image.scale orientation:UIImageOrientationDownMirrored];
    backImage.image = flipImage;

3,水平翻转(即左右镜像)

    UIImageView *backImage = [[UIImageView alloc]init];
    backImage.frame = CGRectMake(0, -300, KSCREEN_WIDTH, 300);
    backImage.image = [UIImage imageNamed:@"你图片的名称"];
    
    UIImage *flipImage = [UIImage imageWithCGImage:backImage.image.CGImage scale:backImage.image.scale orientation:UIImageOrientationLeftMirrored];
    backImage.image = flipImage;

你可能感兴趣的:(实现图片(UIImage)的水平翻转(镜像),垂直翻转)