Быстрая тень на виде с динамическим содержимым c - PullRequest
0 голосов
/ 04 апреля 2020

У меня проблема с динамическим c содержимым с тенью на виде таблицы

У меня было расширение для создания радиуса угла и создания тени

extension UIView {

func roundCorners(_ 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

    let shadowLayer = CAShapeLayer()
    shadowLayer.path = path.cgPath
    shadowLayer.frame = self.frame

    shadowLayer.shadowOpacity = 0.4
    shadowLayer.shadowRadius = 2
    shadowLayer.shadowColor = UIColor.black.cgColor
    shadowLayer.shadowOpacity = 0.13
    shadowLayer.shadowRadius = 6
    shadowLayer.shadowOffset = CGSize(width: 0, height: 3)

    self.superview!.layer.insertSublayer(shadowLayer, below: self.layer)
    }
}

И этот идентификатор MyCustomTableViewCell

override func awakeFromNib() {
    super.awakeFromNib()

    bg_view.roundCorners([.topLeft, .topRight, .bottomRight, .bottomLeft], radius: 9)
}

И это Мой результат (текст «это мои данные в таблице»)

My current re sult

Я также использую

activity_table.rowHeight = UITableView.automaticDimension
activity_table.estimatedRowHeight = 100

И установить строку на 0

1 Ответ

1 голос
/ 04 апреля 2020

Я немного поиграл с этим. Вы делаете этот путь более сложным, чем нужно. Я смог решить эту проблему без использования подслоев.

class Cell: UITableViewCell {
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var containerView: UIView!

    override func awakeFromNib() {
        super.awakeFromNib()
        containerView.layer.cornerRadius = 9
        containerView.layer.shadowColor = UIColor.black.cgColor
        containerView.layer.shadowOpacity = 0.13
        containerView.layer.shadowRadius = 6
        containerView.layer.shadowOffset = CGSize(width: 0, height: 3)
    }
}

containerView - это просто подвид, содержащий метку. Теперь с помощью containerView вы можете настроить затенение и скругленные углы.

Вы можете посмотреть полное решение здесь .

Единственное, что вам нужно сделать уверен в том, что цвет фона ContainerView не ясно. Если это так, вы увидите некоторые интересные побочные эффекты, когда тени распространяются на текстовую метку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...