国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS中實現imageView任意角度旋轉的方法

2020-07-26 02:36:02
字體:
來源:轉載
供稿:網友

前言

在實際的開發中我們可能會遇到這種情況: 需要對圖片進行一定角度的旋轉。對于這種需要,我們可能會用UIView的transform進行旋轉,但是這樣做其實只是對承載imageView的view進行了一定角度的旋轉,而imageView并沒有旋轉。所有這樣的做法并不好。

如果需要實現對imageView實現一定角度的旋轉,具體步驟是:

      1.將image轉成context。

      2.對context進行一定角度的旋轉。

      3.將旋轉后的context 轉化成image。

經過這三個步驟,我們就能夠實現將圖片真正的做到旋轉。

 好了,直接上代碼:

#import"UIImage+RotateImageTool.h"#import<QuartzCore/QuartzCore.h>#import<Accelerate/Accelerate.h>@implementationUIImage (RotateImageTool)-(UIImage*)rotateImageWithDegree:(CGFloat)degree{//將image轉化成context//獲取圖片像素的寬和高size_t width =self.size.width*self.scale;size_t height =self.size.height*self.scale;//顏色通道為8因為0-255經過了8個顏色通道的變化//每一行圖片的字節數因為我們采用的是ARGB/RGBA所以字節數為width * 4size_t bytesPerRow =width *4;//圖片的透明度通道CGImageAlphaInfo info =kCGImageAlphaPremultipliedFirst;//配置context的參數:CGContextRef context =CGBitmapContextCreate(nil, width, height,8, bytesPerRow,CGColorSpaceCreateDeviceRGB(),kCGBitmapByteOrderDefault|info);if(!context) {return nil;}//將圖片渲染到圖形上下文中CGContextDrawImage(context,CGRectMake(0,0, width, height),self.CGImage);uint8_t* data = (uint8_t*)CGBitmapContextGetData(context);//旋轉欠的數據vImage_Buffer src = { data,height,width,bytesPerRow};//旋轉后的數據vImage_Buffer dest= { data,height,width,bytesPerRow};//背景顏色Pixel_8888 backColor = {0,0,0,0};//填充顏色vImage_Flags flags = kvImageBackgroundColorFill;//旋轉context vImageRotate_ARGB8888(&src, &dest,nil, degree *M_PI/180.f, backColor, flags);//將conetxt轉換成imageCGImageRef imageRef =CGBitmapContextCreateImage(context);UIImage* rotateImage =[UIImageimageWithCGImage:imageRefscale:self.scaleorientation:self.imageOrientation];returnrotateImage;}

代碼中有詳細的注釋,在這里我就不過多的解釋了。感興趣的可以到github上面下載哦。

下載地址:github.com/15221532825/ImageTool  (本地下載)

附:iOS ImageView的Image自適應縮放顯示全套處理方法

// retina屏幕圖片顯示問題[_detailImageView setContentScaleFactor:[[UIScreen mainScreen] scale]];// 不規則圖片顯示_detailImageView.contentMode = UIViewContentModeScaleAspectFill;_detailImageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;// 圖片大于或小于顯示區域_detailImageView.clipsToBounds = YES;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 江源县| 兴城市| 乐东| 杭锦后旗| 荣成市| 阳信县| 商河县| 奇台县| 汉阴县| 保定市| 含山县| 长泰县| 福清市| 樟树市| 淅川县| 松江区| 保山市| 巫溪县| 丹阳市| 赫章县| 龙口市| 安康市| 开原市| 铜山县| 罗田县| 怀仁县| 翁牛特旗| 荆门市| 开远市| 庆城县| 青海省| 尼勒克县| 榆社县| 渭南市| 霍邱县| 霞浦县| 宣汉县| 咸阳市| 桐梓县| 商洛市|