【发布时间】:2017-10-04 09:37:10
【问题描述】:
我正在将一个 Swift 3 项目重构为 Swift 4,我遇到了一种情况,以前应用了阴影的按钮不再绘制阴影。
我正在使用这段代码来绘制阴影:
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()
}
}
我尝试在其他位置添加viewDidLayoutSubviews 中的代码,看看是否可以绘制。我已经尝试过viewDidLoad、viewWillLayoutSubviews、viewDidAppear 等。我尝试过对故事板进行核对并“重新开始”,通过再次布置按钮、清理派生数据、从终端和内部对模拟器进行核对Xcode。
按钮包含在UIStackView 中。我有两个水平堆栈视图,其中包含两个嵌入在垂直堆栈视图中的按钮。如果有人有任何建议:还有什么可以尝试的,我欢迎您的建议。感谢您的阅读。
【问题讨论】: