iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客

简介: 需求: 1.日常我们在切控件圆角时会遇到想切任意圆角? 2.切过圆角带边框和不带边框的选择? 那么今天我们就用Objective-C和Swift都给它实现了: OC代码: UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 70)]; myLabel.

需求:

1.日常我们在切控件圆角时会遇到想切任意圆角?

2.切过圆角带边框和不带边框的选择?

那么今天我们就用Objective-C和Swift都给它实现了:


OC代码:

UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 70)];
    myLabel.text = @"Hi,小韩哥!";
    myLabel.font = [UIFont systemFontOfSize:20.0];
    myLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:myLabel];
    
    CGFloat radius = 21.0f;
    
    UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:myLabel.bounds byRoundingCorners:UIRectCornerTopRight|UIRectCornerBottomRight cornerRadii:CGSizeMake(radius, radius)];
    CAShapeLayer * mask  = [[CAShapeLayer alloc] init];
    mask.lineWidth = 5;
    mask.lineCap = kCALineCapSquare;
    
    // 带边框则两个颜色不要设置成一样即可
    mask.strokeColor = [UIColor redColor].CGColor;
    mask.fillColor = [UIColor yellowColor].CGColor;
    
    mask.path = path.CGPath;
    [myLabel.layer addSublayer:mask];

Swift代码:

override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(myLabel);
        myLabel.layer.addSublayer(myLayer);
        
    }

    private lazy var myLabel:UILabel = {
        let label = UILabel.init(frame: CGRect.init(x: 100, y: 100, width: 200, height: 70));
        label.text = "Hi,小韩哥!";
        label.textAlignment = .center;
        return label;
    }()
    private lazy var myLayer:CAShapeLayer = {
        
        let path = UIBezierPath.init(roundedRect: self.myLabel.bounds, byRoundingCorners: [.topRight , .bottomRight] , cornerRadii: self.myLabel.bounds.size);
        let layer = CAShapeLayer.init();
        layer.path = path.cgPath;
        layer.lineWidth = 5;
        layer.lineCap = kCALineCapSquare;
        layer.strokeColor = UIColor.red.cgColor;
        //  注意直接填充layer的颜色,不需要设置控件view的backgroundColor
        layer.fillColor = UIColor.yellow.cgColor;
        return layer;
        
    }()

效果:



第三种思路:


Demo : https://github.com/iOS-OC-Developer/JQRadiusView


更多惊喜:手机加iOS开发者交流群:446310206



目录
相关文章
|
网络安全 开发者 iOS开发
iOS技术博客:App备案指南
本文介绍了移动应用程序(App)备案的重要性和流程。备案是规范App开发和运营的必要手段,有助于保护用户权益、维护网络安全和社会秩序。为了帮助开发者更好地了解备案流程,本文提供了一份最新、最全、最详的备案指南,包括备案目的、好处、对象、时间、流程、条件和注意事项等内容。
iOS技术博客:App备案指南
|
数据采集 网络协议 开发工具
如何进行iOS技术博客的备案?
如何进行iOS技术博客的备案?
227 2
|
9月前
|
API Swift iOS开发
回顾Apple Swift语言的发展和版本演变历程
归纳起来,Swift的发展过程就像一个乡村孩子的成长故事,从一个不谙世事的孩子,通过不懈的学习和实践,让自身的潜力得到最大的发挥,最终成为了社会中有实力的一份子。而这个故事还在继续,让我们共同期待Swift未来的激动人心的篇章!
221 20
|
7月前
|
PyTorch 算法框架/工具 Swift
ms swift torch 与 transformer版本问题造成的nonetype error
当使用ms swift时,需确保安装PyTorch≥2.5.0版本,否则transformer的并行策略将被设为None,导致在并行检测中出现“Nonetype not iterable”错误。
|
缓存 iOS开发
如何在Xcode删除某个版本的IOS模拟器
如何在Xcode删除某个版本的IOS模拟器
1753 1
|
iOS开发
解决使用document.activeElement.blur()禁止弹出手机默认键盘ios版本17以上会出现闪屏问题
解决使用document.activeElement.blur()禁止弹出手机默认键盘ios版本17以上会出现闪屏问题
263 2
|
Linux 数据安全/隐私保护 iOS开发
Xcode8.1如何支持iOS8.0以下版本
Xcode8.1如何支持iOS8.0以下版本
172 0
|
移动开发 开发工具 数据安全/隐私保护
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
|
数据安全/隐私保护 开发者 iOS开发
iOS-打包上架构建版本一直不出现/正在处理/自动消失
iOS-打包上架构建版本一直不出现/正在处理/自动消失
448 0
|
数据采集 网络协议 开发工具
 如何进行iOS技术博客的备案?
在本篇问答中,我们将为iOS技术博主介绍如何进行备案。如果你的iOS应用只包含简单的页面,并通过蓝牙进行数据采集和传输,那么你可能不需要备案。然而,如果你希望通过域名调用后端服务,建议进行备案以满足国内服务器访问的要求。我们将详细解释备案的三要素以及备案流程,并提供参考资料供你查阅。

相关课程

更多