1

我想为 TableView Cell 内的 UIView 设置具有阴影效果的角半径的不同值,如下所示:

这个图片

我的代码是:

cell.headerView.round(corners: [.topRight], radius: 35)

extension UIView {
    func round(corners: UIRectCorner, radius: CGFloat) {
        let path = UIBezierPath(roundedRect:self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let mask = CAShapeLayer()
        mask.path = path.cgPath
        self.layer.mask = mask
        self.layoutIfNeeded()       
    }
}

这适用于 iPhone SE 模拟器,但不适用于 iPhone 6S 模拟器。

4

2 回答 2

0

斯威夫特 4

myView.clipsToBounds = true
        myView.layer.cornerRadius = 20
        myView.layer.maskedCorners = [.layerMaxXMaxYCorner,.layerMinXMaxYCorner,.layerMinXMinYCorner]
于 2017-10-23T11:45:54.943 回答
0

我使用了几乎相同的实现,它在设备和模拟器上都运行良好。

extension UIView
{
    func roundCorners(corners: UIRectCorner, radius: CGFloat)
    {
        let bounds = self.bounds
        let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = bounds
        maskLayer.path = maskPath.cgPath
        self.layer.mask = maskLayer
    }
}

class CustomCell: UITableViewCell
{
    @IBOutlet weak var customView: UIView!

    override func awakeFromNib()
    {
        super.awakeFromNib()
        self.customView.layer.cornerRadius = 10.0
        self.customView.roundCorners(corners: [.topRight], radius: 35.0)
    }
}

截屏:

在此处输入图像描述

于 2017-10-23T12:55:08.053 回答