UIBezierPath的概念及使用

照例恋博,我們看下本文的學(xué)習(xí)大綱


UIBezierPath.png

在該篇文章中可以了解到知識點(diǎn)有以下

  • UIBezierPath的概念
  • UIBezierPath的基本使用方法
  • UIBezierPath的繪制案例

UIBezierPath的概念

UIBezierPath這個(gè)類在UIKit中叁怪, 是Core Graphics框架關(guān)于path的一個(gè)封裝荷科,使用此類可以定義簡單的形狀裹驰,比如我們常用到,矩形,圓形,橢圓面睛,弧,或者不規(guī)則的多邊形尊搬。

UIBezierPath的基本使用方法

  • UIBezierPath對象是CGPathRef數(shù)據(jù)類型的封裝叁鉴。
    關(guān)于CGPathRef不了解,可以閱讀上篇文章佛寿。
    Quartz2D的詳解和使用

  • path如果是基于矢量形狀的幌墓,都用直線或曲線去創(chuàng)建。

  • 一般使用UIBezierPath都是在重寫view的drawRect方法這種情形冀泻。

UIBezierPath的繪制案例

1.繪制直線


交叉線段.png
-(void)drawTwoLine
{  // 創(chuàng)建路徑
    UIBezierPath * path = [UIBezierPath bezierPath];
    // 創(chuàng)建起點(diǎn)
    [path moveToPoint:CGPointMake(10, 10)];
    // 添加線段到終點(diǎn)
    [path addLineToPoint:CGPointMake(90, 90)];
    
    [path moveToPoint:CGPointMake(90, 10)];
    [path addLineToPoint:CGPointMake(10, 90)];
    path.lineWidth = 10.f;// 設(shè)置線寬
    path.lineCapStyle = kCGLineCapSquare;// 設(shè)置線頭樣式
    path.lineJoinStyle = kCGLineJoinBevel;// 設(shè)置交叉樣式
    [path stroke];// 渲染
    
}

2.繪制扇形


扇形.png
-(void)drawFan
{
    UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(40, 40) radius:30 startAngle:M_PI_2 endAngle:M_PI clockwise:YES];
    // 繪制扇形時(shí)需要連接圓心
    [path addLineToPoint:CGPointMake(40, 40)];
    [[UIColor cyanColor] set];
    [path fill]; // 填充
//    [path addClip];
}[圖片上傳中...(圓角矩形.png-d73dcf-1516616860954-0)]

3.繪制圓角矩形


圓角矩形.png
-(void)drawCornerRect
{
    UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 150, 100) cornerRadius:20];
    [path stroke];
}

4.繪制橢圓


橢圓.png
-(void)drawOvalUI
{
    UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50,50, 50, 50)];
//    [path stroke];
    [[UIColor cyanColor] set];
    [path fill];
}

5.繪制圓弧或圓形

-(void)drawArcUI
{
    UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(40, 40) radius:30 startAngle:M_PI_2 endAngle:0 clockwise:YES];
//    [path addLineToPoint:CGPointMake(40, 40)];
    [[UIColor cyanColor] set];
    [path stroke];// 描邊
//    [path fill]; // 填充
}

6.繪制圖片
方式1


 UIImage * image = [UIImage imageNamed:@"1"];
 [image drawInRect:CGRectMake(20, 20, 100, 100)];// 按照frame顯示大小

方式二


圖片2.png
 UIImage * image = [UIImage imageNamed:@"1"];
 [image drawAtPoint:CGPointMake(20, 20)]; // 以這個(gè)坐標(biāo)起點(diǎn)常侣,到view的邊緣

方式三
[圖片上傳中...(圖片3.png-dc1f9e-1516617025868-0)]

 UIImage * image = [UIImage imageNamed:@"1"];
 [image drawAsPatternInRect:CGRectMake(0, 0, 100, 100)];// 如果圖片比區(qū)域小,會進(jìn)行平鋪弹渔;如果圖片比區(qū)域大胳施,有多少繪制多少

8.繪制文字
繪制文字1


文字.png
 NSString * str = @"韓寒,這個(gè)世界的冒犯者肢专,還是和世界和解了舞肆。";
 NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12.0],NSForegroundColorAttributeName:[UIColor grayColor],NSStrokeWidthAttributeName:@10};
    // 繪制方式1
  [str drawInRect:CGRectMake(0, 0, 120, 100) withAttributes:dic];

繪制文字2


文字(第二種方式).png
NSString * str = @"韓寒您没,這個(gè)世界的冒犯者,還是和世界和解了胆绊。";
NSDictionary * dic = @{NSFontAttributeName:[UIFont systemFontOfSize:12.0],NSForegroundColorAttributeName:[UIColor grayColor],NSStrokeWidthAttributeName:@10};
//     繪制方式2
[str drawAtPoint:CGPointMake(0, 70) withAttributes:dic];

9.保存圖片
注意事項(xiàng):ios 8.0之后氨鹏,添加權(quán)限提示。


- (IBAction)saveImage:(id)sender {
    
 //    開啟圖片context
UIGraphicsBeginImageContextWithOptions(self.myImage.bounds.size, NO, 0);
    // 獲取圖片的范圍
    [self.myImage drawViewHierarchyInRect:self.myImage.bounds afterScreenUpdates:YES];
// 從上下文context中獲取圖片
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
    //結(jié)束context,記得關(guān)閉
    UIGraphicsEndImageContext();
    // 寫入相冊
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    
    /*
     This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSPhotoLibraryAddUsageDescription key with a string value explaining to the user how the app uses this data.
     ios 8.0之后压状,添加權(quán)限提示

     */
}
//系統(tǒng)指定的保存后結(jié)束要執(zhí)行的方法
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
    NSLog(@"保存成功");
}

貝塞爾曲線簡單應(yīng)用git地址
[end]
關(guān)于UIBezierPath的簡單使用到這里介紹結(jié)束仆抵。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市种冬,隨后出現(xiàn)的幾起案子蝶溶,更是在濱河造成了極大的恐慌,老刑警劉巖肄梨,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浇衬,死亡現(xiàn)場離奇詭異,居然都是意外死亡十兢,警方通過查閱死者的電腦和手機(jī)趣竣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旱物,“玉大人遥缕,你說我怎么就攤上這事∠海” “怎么了单匣?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宝穗。 經(jīng)常有香客問我户秤,道長,這世上最難降的妖魔是什么逮矛? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任鸡号,我火速辦了婚禮,結(jié)果婚禮上橱鹏,老公的妹妹穿的比我還像新娘膜蠢。我一直安慰自己,他們只是感情好莉兰,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布挑围。 她就那樣靜靜地躺著,像睡著了一般糖荒。 火紅的嫁衣襯著肌膚如雪杉辙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天捶朵,我揣著相機(jī)與錄音蜘矢,去河邊找鬼狂男。 笑死,一個(gè)胖子當(dāng)著我的面吹牛品腹,可吹牛的內(nèi)容都是我干的岖食。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼舞吭,長吁一口氣:“原來是場噩夢啊……” “哼泡垃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起羡鸥,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蔑穴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后惧浴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體存和,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年衷旅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芜茵。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖九串,靈堂內(nèi)的尸體忽然破棺而出寺鸥,到底是詐尸還是另有隱情猪钮,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布胆建,位于F島的核電站,受9級特大地震影響笆载,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凉驻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一腻要、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涝登,春花似錦雄家、人聲如沸胀滚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至媳纬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間层宫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工限匣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人米死。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓贮庞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窗慎。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容