iOS 指定UIView的某几个圆角或边框(Swift)

10 篇文章 0 订阅

在开发中我们经常会遇到对一个UIView 设置四个圆角的情况,这种情况是很好处理的。但是如果遇到只设置其中的某几个圆角的情况怎么办呢?有一种方法是通过UIBezierPath的方法来做,代码如下:

/**

* 设置uiview 的任意圆角

**/

func SetMutiBorderRoundingCorners(_ view:UIView,corner:CGFloat)

{

    let maskPath = UIBezierPath.init(roundedRect: view.bounds,

    byRoundingCorners: [UIRectCorner.bottomLeft, UIRectCorner.topRight],

    cornerRadii: CGSize(width: corner, height: corner))

    let maskLayer = CAShapeLayer()

    maskLayer.frame = view.bounds

    maskLayer.path = maskPath.cgPath

    view.layer.mask = maskLayer

}

此外,我们还会遇到给一个UIview设置某几条边框而不是全部边框的情况,解决办法如下:

func SetBorderWithView(_ view:UIView,top:Bool,left:Bool,bottom:Bool,right:Bool,width:CGFloat,color:UIColor)

{
    
    if top

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: width)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if left

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: 0, width: width, height: view.frame.size.height)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if bottom

    {

        let layer = CALayer()

        layer.frame = CGRect(x: 0, y: view.frame.size.height - width, width: width, height: width)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

    if right

    {

        let layer = CALayer()

        layer.frame = CGRect(x: view.frame.size.width - width, y: 0, width: width, height: view.frame.size.height)

        layer.backgroundColor = color.cgColor

        view.layer.addSublayer(layer)

    }

}

以上两种方法效果如下图所示

Simulator Screen Shot - iPhone 8 Plus - 2018-08-10 at 13.51.22.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值