【问题标题】:How to set shadow for custom view of UITableViewCell in swift 4.2?如何在 swift 4.2 中为 UITableViewCell 的自定义视图设置阴影?
【发布时间】:2018-11-26 12:34:51
【问题描述】:

我已经尝试过了,但对我不起作用:

cell.totalView?.layer.shadowColor = UIColor.yellow.cgColor
cell.totalView?.layer.shadowOffset = CGSize.zero
cell.totalView?.layer.shadowOpacity = 1.0
cell.totalView?.layer.shadowRadius = 10
cell.totalView?.layer.shouldRasterize = true

【问题讨论】:

  • 为什么不在其中使用视图并给它阴影

标签: ios swift layer shadow


【解决方案1】:

尝试通过自定义单元格的awakeFromNib 方法为您的自定义视图添加阴影。

例如

在您的 customTableViewCell 类中添加以下方法

func dropShadow(view: UIView, shadowOpacity: Float = 0.2, shadowColor: CGColor = UIColor.gray.cgColor, shadowRadius: CGFloat = 5){
    view.layer.shadowColor = shadowColor
    view.layer.shadowOpacity = shadowOpacity
    view.layer.shadowOffset = CGSize.zero
    view.layer.shadowRadius = shadowRadius
}

并从awakeFromNib 方法调用它

override func awakeFromNib() {
    super.awakeFromNib()

    dropShadow(view: yourCustomView, shadowOpacity: 0.2, shadowColor: UIColor.yellow.cgColor, shadowRadius: 5)        
}

【讨论】:

    【解决方案2】:

    在 CustomViewCell 中创建 insideView 并在 awakeFromNib() 中加载此函数

    func ui() {
    
        insideView.layer.shadowColor = UIColor.black.cgColor
        insideView.layer.shadowOpacity = 0.2
        insideView.layer.shadowOffset = CGSize.zero
        insideView.layer.shadowRadius = 5
        insideView.layer.cornerRadius = 5
    
    }
    

    【讨论】:

      【解决方案3】:

      将 maskToBounds 设置为 true

        cell.totalView?.layer.masksToBounds = true
      

      【讨论】:

        【解决方案4】:

        只需在表格单元格中添加一个 UIVIew,四周边距为 8。

        创建一个名为CardView.swift的文件

        import UIKit
        
        @IBDesignable
        class CardView: UIView {
        
            @IBInspectable var cornerRadius: CGFloat = 2
        
            @IBInspectable var shadowOffsetWidth: Int = 0
            @IBInspectable var shadowOffsetHeight: Int = 1
            @IBInspectable var shadowColor: UIColor? = UIColor.black
            @IBInspectable var shadowOpacity: Float = 0.1
        
            override func layoutSubviews() {
        
                layer.cornerRadius = cornerRadius
                let shadowPath = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
                layer.masksToBounds = false
                layer.shadowColor = shadowColor?.cgColor
                layer.shadowOffset = CGSize(width: shadowOffsetWidth, height: shadowOffsetHeight);
                layer.shadowOpacity = shadowOpacity
                layer.shadowPath = shadowPath.cgPath
            }
        }
        

        只需在情节提要中添加自定义类

        【讨论】:

          猜你喜欢
          • 2021-12-30
          • 2020-09-20
          • 2011-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多