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-12
UICollectionView 實現(xiàn)圖片瀏覽效果
這篇文章主要為大家介紹了UICollectionView 實現(xiàn)圖片瀏覽效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
IOS 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-03
IOS中UITextView或UITextField字數(shù)限制的實現(xiàn)
這篇文章主要介紹了IOS中UITextView或UITextField字數(shù)限制的實現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
IOS開發(fā)Objective-C?Runtime使用示例詳解
這篇文章主要為大家介紹了IOS開發(fā)Objective-C?Runtime使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
iOS 中 使用UITextField格式化銀行卡號碼的解決方案
今天小編給大家分享ios中使用UITextField格式化銀行卡號碼的實現(xiàn)思路詳解,非常不錯,具有參考借鑒價值,需要的朋友參考下2016-12-12

