quartz2d繪制圓角,圖片剪裁

? ? ? 從事iOS開發(fā)已經(jīng)一年半有余了,發(fā)現(xiàn)整天去學(xué)這學(xué)那還不如靜下心來把會的學(xué)習(xí)牢靠。一些基礎(chǔ)的東西不好好學(xué)習(xí)會成為絆腳石。

很少寫日記文章之類的,留著這個地方權(quán)當(dāng)自娛自樂吧。

quartz2d相信從事iOS開發(fā)的或者是有過cocos2d開發(fā)經(jīng)驗(yàn)的都清楚,我就不贅述了。在開發(fā)中我們也經(jīng)常會使用到圓角。通過如下代碼即可快速實(shí)現(xiàn)圓角。

//設(shè)置圓角半徑

imgView.layer.cornerRadius = 5;

//設(shè)置是否按照圓角進(jìn)行裁剪

imgView.layer.masksToBounds = YES;

這種方法可以實(shí)現(xiàn)圓角效果,但是由于這種方法的其它機(jī)制,當(dāng)屏幕上有大量經(jīng)過這種方法繪制的圓角view時,此時會明顯感覺到卡頓 別讓圓角成為你的性能殺手。

這個時候,我們可以運(yùn)用quartz2d對view進(jìn)行繪制。

這里,我們可以給UIImage 加上一個分類直接獲取到圓角圖片

- (UIImage *)circleImage{

//開啟image繪制

UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);

//獲取上下文

CGContextRef ctx = UIGraphicsGetCurrentContext();

//繪制一個橢圓

CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);

CGContextAddEllipseInRect(ctx, rect);

//對圖形進(jìn)行裁剪

CGContextClip(ctx);

//將image繪制到橢圓中

[self drawInRect:rect];

//得到當(dāng)前image

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

//結(jié)束image繪制

UIGraphicsEndImageContext();

return image;

}

此時當(dāng)我們調(diào)用 [[UIImage imageNamed:@"angle-mask"] circleImage];

就可以得到一個圓角圖片。

利用CoreGraphics 對圖片進(jìn)行剪裁

// 開啟圖形上下文

UIGraphicsBeginImageContextWithOptions(joke.pictureFrame.size, YES, 0.0);

// 將下載完的image對象繪制到圖形上下文

CGFloat width = joke.pictureFrame.size.width;

CGFloat height = width * image.size.height / image.size.width;

[image drawInRect:CGRectMake(0, 0, width, height)];

// 獲得圖片

self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();

// 結(jié)束圖形上下文

UIGraphicsEndImageContext();

其實(shí)這個原理與上面類似,我們看到大圖顯示部分可以通過這個方法實(shí)現(xiàn)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實(shí)現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,698評論 6 30
  • Quartz2D以及drawRect的重繪機(jī)制字?jǐn)?shù)1487 閱讀21 評論1 喜歡1一、什么是Quartz2D Q...
    PurpleWind閱讀 925評論 0 3
  • 在iOS中隨處都可以看到絢麗的動畫效果,實(shí)現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,273評論 5 13
  • 1、設(shè)置UILabel行間距 NSMutableAttributedString* attrString = [[...
    十年一品溫如言1008閱讀 2,048評論 0 3
  • 風(fēng)中黃花殘 雨中陌路人 浸洇點(diǎn)深紅 綠葉喚故人
    月禾之夏閱讀 184評論 0 3

友情鏈接更多精彩內(nèi)容