Как установить тень для пользовательского представления UITableViewCell в Swift 4.2? - PullRequest
0 голосов
/ 26 ноября 2018

Я пробовал это, но у меня не получилось:

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

Ответы [ 4 ]

0 голосов
/ 27 ноября 2018

Попробуйте добавить тень для своего пользовательского вида из 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)        
}
0 голосов
/ 26 ноября 2018

Установить masksToBounds как true

  cell.totalView?.layer.masksToBounds = true
0 голосов
/ 26 ноября 2018

Просто добавьте один 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
    }
}

enter image description hereПросто добавьте пользовательский класс в раскадровку

0 голосов
/ 26 ноября 2018

Сделайте insideView в CustomViewCell и загрузите эту функцию в 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

}
...