Как добавить тень для MDCTextField? - PullRequest
0 голосов
/ 17 февраля 2019

Это мой код:

@IBOutlet var txtFirstName: MDCTextField!
var txtFirstNameController: MDCTextInputControllerOutlined?
override func viewDidLoad() {
txtFirstNameController = MDCTextInputControllerOutlined(textInput: txtFirstName)
}

Я хочу добавить тень к текстовому полю, но не могу понять, как, я использую MaterialComponents Я упомянул все способы, которые у меня естьпроверено и их результаты здесь:

1-й способ:

class ShadowLayer : MDCTextField{
override class var layerClass: AnyClass {
    return MDCShadowLayer.self
}

var shadowLayer: MDCShadowLayer {
    return self.layer as! MDCShadowLayer
}

func setDefaultElevation() {
    self.shadowLayer.elevation = .cardResting
}
}

2-й способ:

extension MDCTextField {

func elevate(elevation: Double) {
    self.backgroundColor = UIColor.white
    self.layer.masksToBounds = false
    self.layer.shadowColor = UIColor.black.cgColor
    self.layer.shadowOffset = CGSize(width: 0, height: elevation)
    self.layer.shadowRadius = CGFloat(elevation)
    self.layer.shadowOpacity = 1

}
}

image 1st way, choose city-> 2nd way">

выберите страну -> 1-й путь, выберите город-> 2-й путь

На рисунке ниже показано следующее:

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2019

Попробуйте установить self.clipsToBounds = true до Настройка self.layer.masksToBounds = false

Ваша функция повышения должна выглядеть следующим образом:

func elevate(elevation: Double) {
    self.backgroundColor = UIColor.white
    self.clipsToBounds = true
    self.layer.masksToBounds = false
    self.layer.shadowColor = UIColor.black.cgColor
    self.layer.shadowOffset = CGSize(width: 0, height: elevation)
    self.layer.shadowRadius = CGFloat(elevation)
    self.layer.shadowOpacity = 1
}
...