UIBezierPath

一委刘、UIBezierPath的介紹


UIBezierPath主要用來繪制矢量圖形,它是基于Core GraphicsCGPathRef數(shù)據(jù)類型和path繪圖屬性的一個封裝鹰椒,所以是需要圖形上下文的CGContextRef钱雷,所以一般UIBezierPathdrawRect中使用。


二吹零、UIBezierPath 的常用屬性

以下屬性是給已存在的path設(shè)置路徑屬性,如寬度拉庵,邊角類型灿椅,拐角類型等

  • 1.CGPath:將UIBezierPath類轉(zhuǎn)換成CGPath,類似于UIColor的CGColor
  • 2.currentPoint:當前path的位置钞支,可以理解為path的終點
  • 3.lineWidth:path寬度
  • 4.lineCapStyle:path端點樣式枚舉茫蛹,有3種樣式
    kCGLineCapButt, // 無端點
    kCGLineCapRound, // 圓形端點
    kCGLineCapSquare // 方形端點(樣式上和kCGLineCapButt是一樣的,但是比kCGLineCapButt長一點)
  • 5.lineJoinStyle:拐角樣式枚舉烁挟,有3種樣式
    kCGLineJoinMiter, // 尖角
    kCGLineJoinRound, // 圓角
    kCGLineJoinBevel // 缺角
  • 6.miterLimit:最大斜接長度(只有在使用kCGLineJoinMiter是才有效)婴洼, 邊角的角度越小,斜接長度就會越大撼嗓,為了避免斜接長度過長柬采,使用lineLimit屬性限制欢唾,如果斜接長度超過miterLimit,邊角就會以KCALineJoinBevel類型來顯示

三粉捻、UIBezierPath構(gòu)建方法

以下類方法是創(chuàng)建一條path

/** 僅僅初始化礁遣,需要用實例方法添加線 */
+ (instancetype)bezierPath;  
/** 獲得矩形path */  
+ (instancetype)bezierPathWithRect:(CGRect)rect;
/** 獲得圓形或橢圓path */
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
/** 獲得圓角矩形path,四周均圓角肩刃,想要某個角或者某些角圓角用下面的方法 */
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect
                             cornerRadius:(CGFloat)cornerRadius;
/** 獲得圓角矩形祟霍,是某些角圓角,UIRectCorner是枚舉類型 */
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect
                        byRoundingCorners:(UIRectCorner)corners 
                              cornerRadii:(CGSize)cornerRadii;
/** 獲得圓弧形path */
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center       // 圓心
                                 radius:(CGFloat)radius       // 半徑
                             startAngle:(CGFloat)startAngle   // 起始角
                               endAngle:(CGFloat)endAngle     // 結(jié)束角
                              clockwise:(BOOL)clockwise;      // 是否順時針
/** 用一條CGPath初始化 */
+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;

四盈包、UIBezierPath實例方法

以下實例方法是給已創(chuàng)建的path添加路徑

/** 以某一點開始作為起點沸呐,一般用`+ (instancetype)bezierPath`創(chuàng)建的貝塞爾曲線,先用該方法標注一個起點呢燥,并調(diào)用其他的創(chuàng)建線條的方法來繪制曲線 */
- (void)moveToPoint:(CGPoint)point;
/** 從path的最后一點開始繪制一條線到目標點 */
- (void)addLineToPoint:(CGPoint)point;
/** 添加一條三次貝塞爾曲線 */
- (void)addCurveToPoint:(CGPoint)endPoint
          controlPoint1:(CGPoint)controlPoint1
          controlPoint2:(CGPoint)controlPoint2;
/** 添加一條二次貝塞爾曲線 */   
 - (void)addQuadCurveToPoint:(CGPoint)endPoint
                controlPoint:(CGPoint)controlPoint;
/** 添加一條圓弧崭添,屬性定義和類方法中相同 */
- (void)addArcWithCenter:(CGPoint)center 
                  radius:(CGFloat)radius 
              startAngle:(CGFloat)startAngle 
                endAngle:(CGFloat)endAngle
               clockwise:(BOOL)clockwise NS_AVAILABLE_IOS(4_0);
/** 為path添加虛線,pattern數(shù)組存放各段虛線的長度疮茄,count是數(shù)組元素數(shù)量滥朱,phase是起始位置 */
- (void)setLineDash:(nullable const CGFloat *)pattern 
              count:(NSInteger)count
              phase:(CGFloat)phase;

五、使用

  • drawRect中直接繪制圖形的基本步驟
    1.創(chuàng)建path力试,用類方法創(chuàng)建
    2.設(shè)置path的屬性
    3.為path的邊緣stroke設(shè)置顏色徙邻,為path的填充fill設(shè)置顏色,在需要的情況下
    4.為path繪制邊緣 [path stroke] 或 為path 繪制填充 [path fill]
  • 只創(chuàng)建path并用來當做其他對象的屬性而設(shè)置畸裳,比如CAShapeLayer飛過去吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缰犁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子怖糊,更是在濱河造成了極大的恐慌帅容,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伍伤,死亡現(xiàn)場離奇詭異并徘,居然都是意外死亡,警方通過查閱死者的電腦和手機扰魂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門麦乞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劝评,你說我怎么就攤上這事姐直。” “怎么了蒋畜?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵声畏,是天一觀的道長。 經(jīng)常有香客問我姻成,道長插龄,這世上最難降的妖魔是什么愿棋? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮辫狼,結(jié)果婚禮上初斑,老公的妹妹穿的比我還像新娘。我一直安慰自己膨处,他們只是感情好见秤,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著真椿,像睡著了一般鹃答。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上突硝,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天测摔,我揣著相機與錄音,去河邊找鬼解恰。 笑死锋八,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的护盈。 我是一名探鬼主播挟纱,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腐宋!你這毒婦竟也來了紊服?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤胸竞,失蹤者是張志新(化名)和其女友劉穎欺嗤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卫枝,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡煎饼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了校赤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腺占。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痒谴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铡羡,我是刑警寧澤积蔚,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站烦周,受9級特大地震影響尽爆,放射性物質(zhì)發(fā)生泄漏怎顾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一漱贱、第九天 我趴在偏房一處隱蔽的房頂上張望槐雾。 院中可真熱鬧,春花似錦幅狮、人聲如沸募强。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擎值。三九已至,卻和暖如春逐抑,著一層夾襖步出監(jiān)牢的瞬間鸠儿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工厕氨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留进每,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓命斧,卻偏偏與公主長得像田晚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冯丙,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

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