Swift - UIView設(shè)置四個(gè)角不同圓角大小

創(chuàng)建Path

typealias CornersRadius = (topLeft: CGFloat, topRight: CGFloat, bottomLeft: CGFloat, bottomRight: CGFloat)

//創(chuàng)建Path
func createPath(bounds:CGRect, cornersRadius:CornersRadius) -> CGPath {
        let minX = bounds.minX
        let minY = bounds.minY
        let maxX = bounds.maxX
        let maxY = bounds.maxY

        let topLeftCenterX = minX + cornersRadius.topLeft
        let topLeftCenterY = minY + cornersRadius.topLeft
        let topRightCenterX = maxX - cornersRadius.topRight
        let topRightCenterY = minY + cornersRadius.topRight
        let bottomLeftCenterX = minX + cornersRadius.bottomLeft
        let bottomLeftCenterY = maxY - cornersRadius.bottomLeft
        let bottomRightCenterX = maxX - cornersRadius.bottomRight
        let bottomRightCenterY = maxY - cornersRadius.bottomRight
        
        let path = CGMutablePath()
        path.addArc(center: CGPoint(x: topLeftCenterX, y: topLeftCenterY), radius: cornersRadius.topLeft, startAngle: CGFloat(Double.pi), endAngle: CGFloat(3 * Double.pi / 2.0), clockwise: false)
        path.addArc(center: CGPoint(x: topRightCenterX, y: topRightCenterY), radius: cornersRadius.topRight, startAngle: CGFloat(3 * Double.pi / 2.0), endAngle: 0, clockwise: false)
        path.addArc(center: CGPoint(x: bottomRightCenterX, y: bottomRightCenterY), radius: cornersRadius.bottomRight, startAngle: 0, endAngle: CGFloat(Double.pi / 2.0), clockwise: false)
        path.addArc(center: CGPoint(x: bottomLeftCenterX, y: bottomLeftCenterY), radius: cornersRadius.bottomLeft, startAngle: CGFloat(Double.pi / 2.0), endAngle: CGFloat(Double.pi), clockwise: false)
        path.closeSubpath()
        
        return path
}

使用

let subView = UIView(frame: CGRect(x: 80, y: 230, width: 300, height: 80))
let shapLayer = CAShapeLayer()
let cornersRadius = CornersRadius(topLeft: 30, topRight: 10, bottomLeft: 0, bottomRight: 10)
shapLayer.path = createPath(bounds: subView.bounds, cornersRadius: cornersRadius)
subView.layer.mask = shapLayer
subView.backgroundColor = UIColor.gray

效果展示:

屏幕快照
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肛宋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坞笙,更是在濱河造成了極大的恐慌荡陷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異地消,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)畏妖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門脉执,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人戒劫,你說(shuō)我怎么就攤上這事半夷。” “怎么了谱仪?”我有些...
    開(kāi)封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵玻熙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疯攒,道長(zhǎng)嗦随,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮枚尼,結(jié)果婚禮上贴浙,老公的妹妹穿的比我還像新娘。我一直安慰自己署恍,他們只是感情好崎溃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著盯质,像睡著了一般袁串。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呼巷,一...
    開(kāi)封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天囱修,我揣著相機(jī)與錄音,去河邊找鬼王悍。 笑死破镰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的压储。 我是一名探鬼主播鲜漩,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼集惋!你這毒婦竟也來(lái)了孕似?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芋膘,失蹤者是張志新(化名)和其女友劉穎鳞青,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體为朋,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡臂拓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了习寸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胶惰。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霞溪,靈堂內(nèi)的尸體忽然破棺而出孵滞,到底是詐尸還是另有隱情,我是刑警寧澤鸯匹,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布坊饶,位于F島的核電站,受9級(jí)特大地震影響殴蓬,放射性物質(zhì)發(fā)生泄漏匿级。R本人自食惡果不足惜蟋滴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痘绎。 院中可真熱鬧津函,春花似錦、人聲如沸孤页。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)行施。三九已至允坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛾号,已是汗流浹背屋讶。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留须教,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓斩芭,卻偏偏與公主長(zhǎng)得像轻腺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子划乖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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