溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS如何實(shí)現(xiàn)圓角箭頭視圖

發(fā)布時(shí)間:2021-04-16 09:28:16 來(lái)源:億速云 閱讀:255 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹iOS如何實(shí)現(xiàn)圓角箭頭視圖,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

在APP中實(shí)現(xiàn)類似聊天內(nèi)容背景圖時(shí),需要繪制圓角及箭頭。很多人會(huì)選擇使用圖片(這也是最省事的一種方法),但是對(duì)于在視圖中對(duì)內(nèi)容做約束布局的話,我們無(wú)法準(zhǔn)確的知道箭頭的偏移量。下面就來(lái)介紹一下利用CGContextRef怎樣繪制吧。

先來(lái)看看效果圖吧!

iOS如何實(shí)現(xiàn)圓角箭頭視圖

代碼實(shí)現(xiàn):

- (void)drawRect:(CGRect)rect {
    float lw = 2; // 邊線寬度
    float aw = 4;// 箭頭寬
    float ah = 5;// 箭頭高
    float r = 3;// 圓角角度
    
    // 需要減去邊線的寬度,為什么不是減去邊線的寬度x2?
    // 因?yàn)樽筮吘€和上邊線是往視圖內(nèi)描繪的,而右邊線和下邊線是往視圖外描繪的。
    float w = self.frame.size.width - lw;// 設(shè)置畫(huà)線長(zhǎng)度
    float h = self.frame.size.height - lw;// 設(shè)置畫(huà)線寬度
    
    // 獲取上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 設(shè)置邊線寬度
    CGContextSetLineWidth(context, lw);
    //邊框顏色
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
 
    // 矩形填充顏色
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
 
    CGContextMoveToPoint(context, 0, lw); // 開(kāi)始坐標(biāo)左邊開(kāi)始
    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ù)坐標(biāo)繪制路徑

    // 父類調(diào)用 放在畫(huà)完邊線后。不然設(shè)置的文字會(huì)被覆蓋
    [super drawRect:rect];
}

以上是“iOS如何實(shí)現(xiàn)圓角箭頭視圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

ios
AI