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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:43:15
字體:
來源:轉載
供稿:網友

前言

在實際的開發中我們可能會遇到這種情況: 需要對圖片進行一定角度的旋轉。對于這種需要,我們可能會用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;}

ios,imageview,旋轉,imageview旋轉180,imageview旋轉90

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

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

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

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

總結

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

 

注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 虹口区| 长沙市| 英超| 洱源县| 天门市| 罗城| 安徽省| 江都市| 盈江县| 应城市| 南召县| 嫩江县| 东光县| 宣威市| 龙游县| 保山市| 建德市| 洛隆县| 特克斯县| 五家渠市| 阿拉善盟| 泉州市| 独山县| 莫力| 青海省| 横山县| 兴业县| 科技| 舞钢市| 岱山县| 延边| 三亚市| 鄂伦春自治旗| 锡林浩特市| 仙桃市| 长沙县| 林口县| 阿坝县| 台南市| 偃师市| 和平县|