iOS實現(xiàn)圓角箭頭視圖
在APP中實現(xiàn)類似聊天內(nèi)容背景圖時,需要繪制圓角及箭頭。很多人會選擇使用圖片(這也是最省事的一種方法),但是對于在視圖中對內(nèi)容做約束布局的話,我們無法準確的知道箭頭的偏移量。下面就來介紹一下利用CGContextRef怎樣繪制吧。
先來看看效果圖吧!
代碼實現(xiàn):
- (void)drawRect:(CGRect)rect { float lw = 2; // 邊線寬度 float aw = 4;// 箭頭寬 float ah = 5;// 箭頭高 float r = 3;// 圓角角度 // 需要減去邊線的寬度,為什么不是減去邊線的寬度x2? // 因為左邊線和上邊線是往視圖內(nèi)描繪的,而右邊線和下邊線是往視圖外描繪的。 float w = self.frame.size.width - lw;// 設(shè)置畫線長度 float h = self.frame.size.height - lw;// 設(shè)置畫線寬度 // 獲取上下文 CGContextRef context = UIGraphicsGetCurrentContext(); // 設(shè)置邊線寬度 CGContextSetLineWidth(context, lw); //邊框顏色 CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); // 矩形填充顏色 CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); CGContextMoveToPoint(context, 0, lw); // 開始坐標左邊開始 CGContextAddArcToPoint(context, w, lw, w, r, r); // 右上角角度 CGContextAddArcToPoint(context, w , h, w-r, h, r); // 右下角角度 CGContextAddArcToPoint(context, aw, h, aw, h-r, r); // 左下角角度 CGContextAddLineToPoint(context, aw, ah); // 向左上豎線 CGContextAddLineToPoint(context, 0, lw); // 向左上斜線 CGContextDrawPath(context, kCGPathFillStroke); //根據(jù)坐標繪制路徑 // 父類調(diào)用 放在畫完邊線后。不然設(shè)置的文字會被覆蓋 [super drawRect:rect]; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS動態(tài)調(diào)整UILabel高度的幾種方法
在iOS編程中UILabel是一個常用的控件,下面這篇文章主要給大家介紹了關(guān)于iOS動態(tài)調(diào)整UILabel高度的幾種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12UICollectionView 實現(xiàn)圖片瀏覽效果
這篇文章主要為大家介紹了UICollectionView 實現(xiàn)圖片瀏覽效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07IOS LaunchScreen設(shè)置啟動圖片與啟動頁停留時間詳解
這篇文章主要介紹了IOS LaunchScreen設(shè)置啟動圖片與啟動頁停留時間詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02詳解iOS App開發(fā)中UIViewController的loadView方法使用
這篇文章主要介紹了詳解iOS App開發(fā)中UIViewController的loadView方法使用,講解了訪問view屬性時loadView方法的調(diào)用及使用loadView時的一些注意點,需要的朋友可以參考下2016-03-03IOS中UITextView或UITextField字數(shù)限制的實現(xiàn)
這篇文章主要介紹了IOS中UITextView或UITextField字數(shù)限制的實現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10IOS開發(fā)Objective-C?Runtime使用示例詳解
這篇文章主要為大家介紹了IOS開發(fā)Objective-C?Runtime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02iOS 中 使用UITextField格式化銀行卡號碼的解決方案
今天小編給大家分享ios中使用UITextField格式化銀行卡號碼的實現(xiàn)思路詳解,非常不錯,具有參考借鑒價值,需要的朋友參考下2016-12-12