贝塞尔曲线切割圆角
ios 系統框架已經給我們提供了相應的切割圓角的方法, 但是如果在一個見面有很多控件切割的話會出現卡頓和個別不切的現象
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /* 創建一個Button */ ???UIButton * button = [UIButton buttonWithType:(UIButtonTypeSystem)]; ???[button setFrame:CGRectMake(100, 100, 100, 100)]; ???[self addSubview:button]; /* 正常的圓角需求處理方法 */ ??button.layer.cornerRadius = 10.0f; //弧度 ??button.layer.masksToBounds = YES; /* 貝塞爾曲線切割 */ ??/** ???* ???* @param UIRectCorner ???* 左上 UIRectCornerTopLeft?? = 1 << 0, ????左下 UIRectCornerBottomLeft = 1 << 2, ????右下 UIRectCornerBottomRight = 1 << 3, ????所有角 UIRectCornerAllCorners = ~0UL ???* ???*/ UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:button.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii:button.bounds.size]; ??CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init]; ??//設置大小 ??maskLayer.frame = button.bounds; ??//設置圖形樣子 ??maskLayer.path = maskPath.CGPath; ??button.layer.mask = maskLayer; | 
注意: 如果這里選擇兩個角 的話如果是選兩個對角線 則會切 所有角
比如:UIRectCornerTopLeft | UIRectCornerBottomRight 他就會切割所有角
當然你也可以直接創建個圓角的button
僅供參考,鏈接http://www.jb51.net/article/118140.htm ? 感謝分享
?
但是在實際開發中 ?不建議這么寫
18年04月為止切圓角的性能最好的方法是,用 ?貝塞爾曲線 和 ?context上下文來 ?畫圓角。 ?用 ?button.layer.masksToBounds 和?button.layer.mask都會對性能帶來很大的消耗
總結
                            
                        - 上一篇: Java面试题全集中
 - 下一篇: dft计算傅里叶级数系数_一道国外的DF