2017-10-04 81 views
0

我正在重構一個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之內。我有兩個水平堆棧視圖,其中包含嵌入在垂直堆棧視圖中的兩個按鈕。如果任何人有任何建議重新:還有什麼要嘗試,我歡迎你的建議。謝謝你的閱讀。

回答

1

請試試這個代碼,我已經改變了shadowOffset

func drawShadow() { 
    self.layer.drawsAsynchronously = true 
    self.layer.masksToBounds = false 
    self.layer.shadowColor = UIColor.black.cgColor 
    self.layer.shadowOffset = CGSize(width: 1.0, height: 2.0) 
    self.layer.shadowRadius = self.layer.cornerRadius 
    self.layer.shadowOpacity = 0.5  
    } 
+0

這就是它!我也改變了'cornerRadius'。謝謝! – Adrian