Здесь угол работает, но тень не работает в iOS 9 и 10 - PullRequest
0 голосов
/ 15 мая 2018

Здесь угол работает, но тень не работает в iOS 9 и 10

и iOS 11 работают нормально

 viewBlueMe.chatCellDesign([.topLeft,.bottomLeft,.topRight], [.layerMinXMinYCorner,.layerMinXMaxYCorner,.layerMaxXMinYCorner], radius: 5)

расширение:

    extension UIView {
    func chatCellDesign(_ corners:UIRectCorner,_ cormerMask:CACornerMask, radius: CGFloat) {

        if #available(iOS 11.0, *){
            self.clipsToBounds = false
            self.layer.cornerRadius = radius
            self.layer.maskedCorners = cormerMask

            self.layer.shadowColor = UIColor.gray.cgColor
            self.layer.shadowOpacity = 1
            self.layer.shadowOffset = CGSize.zero
            self.layer.shadowRadius = 5
        }else{
            let rectShape = CAShapeLayer()
            rectShape.bounds = self.frame
            rectShape.position = self.center
            rectShape.path = UIBezierPath(roundedRect: self.bounds,    byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)).cgPath
            self.layer.mask = rectShape

            // FIXME: THIS CODE IS NOT WORK
            self.layer.shadowColor = UIColor.gray.cgColor
            self.layer.shadowOpacity = 1
            self.layer.shadowOffset = CGSize.zero
            self.layer.shadowRadius = 5


        }
    }
}

мне нужен этот тип вывода в iOS 9 и 10, также это iOS11

Заранее спасибо enter image description here

1 Ответ

0 голосов
/ 15 мая 2018

Создайте один outerview и поместите свой UILabel в него, и, пожалуйста, найдите ниже детали,

outerView.layer.cornerRadius = 5.0
outerView.layer.shadowColor = UIColor.black.cgColor
outerView.layer.shadowOffset = CGSize.zero
outerView.layer.shadowOpacity = 0.2
outerView.layer.shadowRadius = 5.0

ОБНОВЛЕНИЕ

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

enter image description here

и это IBOutlets

@IBOutlet weak var tmpView: UIView!
@IBOutlet weak var innerView: UIView!

Вы можете сделать это,

innerView.roundCorners([.topLeft, .topRight, .bottomLeft], radius: 5)
tmpView.layer.shadowColor = UIColor.black.cgColor
tmpView.layer.shadowOffset = CGSize.zero
tmpView.layer.shadowOpacity = 0.2
tmpView.layer.shadowRadius = 10.0

Найдите расширение UIView здесь,

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
    }
}

, это даст вам вывод ниже

enter image description here

FYI.Поиграйте shadow свойство для точного вывода вы хотите.

...