UIView теневая проблема на реальном устройстве - iOS - PullRequest
0 голосов
/ 29 марта 2020

У меня есть ячейка табличного представления с представлением внутри, и я хочу добавить к ней тень.

По этой причине я добавляю этот код:

self.PrimaView.layer.shadowPath = UIBezierPath(rect: self.PrimaView.bounds).cgPath
self.PrimaView.layer.shadowRadius = 3
self.PrimaView.layer.shadowOffset = .zero
self.PrimaView.layer.shadowOpacity = 3

Это структура ячейки табличного представления:

enter image description here

Моя проблема заключается в следующем:

когда я выполняю код на симуляторе, я получаю это (это то, что я хочу получить):

enter image description here

, но когда я выполняю тот же код на реальном устройстве, я получаю это:

enter image description here

Почему он отличается от предыдущего изображения?

1 Ответ

0 голосов
/ 29 марта 2020

@ Sulthan прав или может быть, у вас проблема с безопасным пространством, если у вас есть такое же устройство, если нет. Тогда вы можете использовать этот код для тени

import UIKit

@IBDesignable
class CardViewMaterial: UIView {

//    @IBInspectable var cornerRadius: CGFloat = 2

    @IBInspectable var shadowOffsetWidth: Int = 0
    @IBInspectable var shadowOffsetHeight: Int = 3
    @IBInspectable var shadowColor: UIColor? = UIColor.black
    @IBInspectable var shadowOpacity: Float = 0.5

    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
    }

}
...