Tableview Xib Shadow Swift - PullRequest
       0

Tableview Xib Shadow Swift

0 голосов
/ 01 января 2019

Вот что я пытаюсь сделать:

Original Screen Shot

Скриншот взят с Iphone:

Taken Screenshot

Это мой код:

cell.shadowLayerView.layer.masksToBounds = false
cell.shadowLayerView.layer.shadowOffset = CGSize(width: 0, height: 0)
cell.shadowLayerView.layer.shadowColor = UIColor.black.cgColor
cell.shadowLayerView.layer.shadowOpacity = 0.23
cell.shadowLayerView.layer.shadowRadius = 4
cell.shadowLayerView.layer.shadowPath = UIBezierPath(roundedRect: cell.shadowLayerView.bounds, cornerRadius: 2).cgPath
cell.shadowLayerView.layer.shouldRasterize = true
cell.shadowLayerView.layer.rasterizationScale = UIScreen.main.scale
cell.discriptionLbl.frame.size.width = UIScreen.main.bounds.size.width

Это мой просмотр таблицы xib.На исходном изображении показаны светло-серые тени со всех сторон (сверху, снизу, слева, справа), но на снятом изображении показаны все боковые тени, но зачем показывать дополнительные тени справа и снизу.

См. НижеИзображение:

Latest Taken Image

Вопрос: Как показать одинаковую тень со всех сторон изображения, как исходное изображение (тень светло-серого цвета)?

Может кто-нибудь объяснить мне, как решить эту проблему, я пытался решить эту проблему, но пока нет результатов.

Любая помощь будет принята с благодарностью.

Спасибозаранее.

Ответы [ 2 ]

0 голосов
/ 01 января 2019

попробуйте

   myView.layer.cornerRadius = 10
   let shadowPath = UIBezierPath(roundedRect: myView.bounds, cornerRadius: 10)

    myView.layer.masksToBounds = false
    myView.layer.shadowColor = UIColor.gray.cgColor
    myView.layer.shadowOffset = CGSize(width: 0, height: 2)
    myView.layer.shadowOpacity = 0.5

Или вы можете использовать Sketch Shadow

extension CALayer {
    func applySketchShadow(
        color: UIColor = .black,
        alpha: Float = 0.5,
        x: CGFloat = 0,
        y: CGFloat = 2,
        blur: CGFloat = 4,
        spread: CGFloat = 0)
    {
        shadowColor = color.cgColor
        shadowOpacity = alpha
        shadowOffset = CGSize(width: x, height: y)
        shadowRadius = blur / 2.0
        if spread == 0 {
            shadowPath = nil
        } else {
            let dx = -spread
            let rect = bounds.insetBy(dx: dx, dy: dx)
            shadowPath = UIBezierPath(rect: rect).cgPath
        }
    }
}

применить Sketch Shadow

 myView.layer.cornerRadius = 10
        let shadowPath = UIBezierPath(roundedRect: myView.bounds, cornerRadius: 10)

   myView.layer.applySketchShadow(
            color: .black, 
            alpha: 0.5, 
            x: CGFloat(0), 
            y: CGFloat(10), 
            blur: 20, 
            spread: 0)
        myView.layer.shadowPath = shadowPath.cgPath
0 голосов
/ 01 января 2019

См. Следующий код:

mainViewCorner.layer.shadowColor = UIColor.red.cgColor;
mainViewCorner.layer.shadowOffset = CGSize.zero //direction of shadow
mainViewCorner.layer.shadowOpacity = 1.0; // opacity for shadow
mainViewCorner.layer.shadowRadius = 0.0; //amount of shadow to blur
mainViewCorner.layer.cornerRadius = 4.0;

проблема с вашим кодом была shadowOffset.Это определяет направление вашей тени.Если вы хотите тень со всех сторон - она ​​должна иметь нулевое значение как для ширины, так и для высоты.

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