Swift 3のプロジェクトをSwift 4にリファクタリングしていて、以前に影が適用されていたボタンに影が描画されないという状況が発生しました。影がUIButtonsに描画されない
私は影を描画するために、このコードを使用しています:
extension UIButton {
func drawShadow() {
self.layer.drawsAsynchronously = true
self.layer.masksToBounds = false
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize.zero
self.layer.shadowRadius = self.layer.cornerRadius
self.layer.shadowOpacity = 0.5
}
}
私はこのコードを使用してviewDidLayoutSubviews
に影を描画するコードを呼び出す:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
buttonArray = [self.buttonOne, self.buttonTwo, self.buttonThree, self.buttonFour]
buttonArray.forEach { button in
button.subviews.filter{$0 is UIImageView}.forEach({ imageView in
imageView.contentMode = .scaleAspectFit
})
button.clipsToBounds = false
button.drawShadow()
}
}
私は、コードをaddding試してみました他の場所でviewDidLayoutSubviews
で私はそれを得ることができるかどうかを確認する。私はviewDidLoad
、viewWillLayoutSubviews
、viewDidAppear
などを試しました。私は、ストーリーボードをやり直して、ボタンをもう一度レイアウトし、派生データをクリーニングし、端末とXcodeの両方からシミュレータを鳴らしてみました。
ボタンはUIStackView
に含まれています。私は、垂直スタックビュー内に埋め込まれた2つのボタンを含む2つの水平スタックビューを持っています。誰かが何か提案がありましたら、それ以外に何をしようか、私はあなたの提案を歓迎します。読んでくれてありがとう。
を変更しました!私は 'cornerRadius'も変更しました。ありがとうございました! – Adrian