IOS Изображение с эффектом Swift карты обрезается - PullRequest
0 голосов
/ 16 января 2020

Ниже приведен мой код для создания CardView и добавления эффекта тени

 override func awakeFromNib() {
    super.awakeFromNib()
    self.layoutIfNeeded()
    cellBgview.layer.cornerRadius = 15.0
    cellBgview.layer.borderWidth = 1.0
    cellBgview.layer.borderColor = UIColor.clear.cgColor
    cellBgview.layer.shadowColor = UIColor.gray.cgColor
    cellBgview.layer.shadowRadius = 14.0
    cellBgview.layer.shadowOpacity = 0.5
    cellBgview.layer.shadowPath = UIBezierPath(roundedRect: cellBgview.bounds, cornerRadius: cellBgview.layer.cornerRadius).cgPath
    // In
}

Это выглядит так

enter image description here

Радиус угла не работает в этом случае, чтобы заставить работать радиус угла, я добавил следующий код

cellBgview.clipsToBounds = true

После добавления кода выше выглядит это

enter image description here

Обратите внимание, что после добавления cellBgview.clipsToBounds = истинная высота карты и тень отсутствуют, но радиус угла отображается

Как сделать вид карты с радиусом угла и тенью без изображения, получающего клип.

Также пробовал

cellBgview.layer.masksToBounds = true

но он не работает.

enter image description here

Ответы [ 3 ]

1 голос
/ 16 января 2020

добавить пользовательский вид в вашу ячейку, назовем его представлением содержимого. в этом представлении добавьте еще одно представление, в которое вы добавите представление изображения и нижние метки. Таким образом, фактическая иерархия будет выглядеть следующим образом

--Cell
  ---UIView //add shadow on this view, also make its backgroundColor to clear color
       ---UIView //add corner radius to this view and clipsToBounds = true for this view
             ---UIImageView
             ---Bottom Labels / Another UIView / Stack View

эта иерархия поможет вам получить изображение круглого угла только сверху и просмотреть круглые углы нижнего содержимого

1 голос
/ 16 января 2020

Добавьте еще UIView в свою ячейку и добавьте imageView в этом UIView ... Примените corner radius к imageView. Примените тень к этому UIView, удерживая imageView. добавьте clipsToBounds к imageView, а не к UIView, потому что clipsToBounds обрезает все, что находится за пределами границ, которые также могут быть тенями. решит вашу проблему

0 голосов
/ 16 января 2020

Попытайтесь достичь Тени, Углового Радиуса, Границы в одном виде.

cellBgview.backgroundColor = UIColor.white
let cellBgViewLayer = cellBgview.layer()
cellBgViewLayer?.masksToBounds = false
cellBgViewLayer?.shadowColor = UIColor.lightGray.cgColor
cellBgViewLayer?.shadowOpacity = 1.0
cellBgViewLayer?.shadowRadius = 6.0
cellBgViewLayer?.shadowOffset = CGSize(width: 0, height: 0)
cellBgViewLayer?.shouldRasterize = true
cellBgViewLayer?.cornerRadius = 5.0
cellBgViewLayer?.borderColor = UIColor.lightGray.cgColor
cellBgViewLayer?.borderWidth = 1.0
cellBgViewLayer?.shadowPath = UIBezierPath(rect: cellBgview.bounds).cgPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...