【问题标题】:How to set .topright to corner redius with higher value t inside TableView Cell in Swift 3如何在 Swift 3 中的 TableView 单元内设置具有更高值 t 的 .top 右上角半径
【发布时间】:2017-09-14 12:20:47
【问题描述】:

我想为 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 模拟器。

【问题讨论】:

  • 我会自己创建路径,而不是使用 UIBezierPath(roundedRect:byRoundingCorners:cornerRadii:),它应该在每个角落应用相同的角落效果,我发现奇怪的是它适用于 SE 而不是 6S 而方法不应该' t产生你想要的效果。
  • 我想设置右上角的视图更圆润,其余3个是相同的带有阴影效果的Corner Redis

标签: swift swift3 shadow rounded-corners roundedcorners-dropshadow


【解决方案1】:

斯威夫特 4

myView.clipsToBounds = true
        myView.layer.cornerRadius = 20
        myView.layer.maskedCorners = [.layerMaxXMaxYCorner,.layerMinXMaxYCorner,.layerMinXMinYCorner]

【讨论】:

    【解决方案2】:

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

    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)
        }
    }
    

    截图:

    【讨论】:

      猜你喜欢
      • 2016-03-31
      • 2016-06-14
      • 1970-01-01
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 2021-07-15
      • 1970-01-01
      相关资源
      最近更新 更多