2016-04-28 24 views
0

我已經創建了兩個自定義類:CutomView類(UIView的子類)和CustomButton類(UIButton的子類)。iOS中的CustomView和CustomButton

class CustomView: UIView { 

    override func drawRect(rect: CGRect) { 
     // Drawing code 
     layer.masksToBounds = true 
     layer.borderWidth = 2.0 
     layer.borderColor = UIColor(colorLiteralRed: 0.0/255, green: 64.0/255, blue: 128.0/255, alpha: 1).CGColor 
     layer.cornerRadius = 10.0 
     let startColor = UIColor(colorLiteralRed: 255.0/255, green: 204.0/255, blue: 1.0, alpha: 1.0).CGColor 
     let endColor = UIColor(colorLiteralRed: 0, green: 128.0/255, blue: 1.0, alpha: 1.0).CGColor 
     let gradientLayer = CAGradientLayer() 
     gradientLayer.frame = CGRect(origin: layer.frame.origin, size: layer.frame.size) 
     gradientLayer.colors = [startColor, endColor]; 
     layer.addSublayer(gradientLayer) 
    } 

@IBDesignable 
class CustomButton: UIButton { 
    override func drawRect(rect: CGRect) { 
     // Drawing code 
     layer.masksToBounds = true 
     layer.borderWidth = 2.0 
     layer.borderColor = UIColor(colorLiteralRed: 0.0/255, green: 64.0/255, blue: 128.0/255, alpha: 1).CGColor 
     layer.cornerRadius = 2.0 
     let startColor = UIColor(colorLiteralRed: 192.0/255, green: 192.0/255, blue: 192.0/255, alpha: 1.0).CGColor 
     let endColor = UIColor(colorLiteralRed: 239.0/255, green: 239.0/255, blue: 239.0/255, alpha: 1.0).CGColor 
     let gradientLayer = CAGradientLayer() 
     gradientLayer.frame = CGRect(origin: layer.frame.origin, size: layer.frame.size) 
     gradientLayer.colors = [startColor, endColor]; 
     layer.addSublayer(gradientLayer) 
    } 

} 

我使用的那些定製子類來設計視圖和按鈕。當我查看應用的自定義類時,它們工作正常,但由於某些原因,該按鈕在模擬器或iOS設備中不可見。

如果有人能指向我的錯誤或幫我修復它,那將是非常棒的。

Storyboard and Preview shows the purple blue background and button

Simulator only displays purple blue background

+0

如何ü在你的代碼中添加按鈕?更新代碼或嘗試使用button.settile方法設置標題 –

+0

@Shobhakar Tiwari我正在使用故事板添加按鈕並將該類設置爲CustomButton for button。 – Roshan

+0

okey所以按鈕沒有顯示在故事板上,是否在故事板中設置了ibdesignable屬性 –

回答

0

layer.addSublayer呼叫追加層圖層的層次結構。因此,漸變是最後繪製的東西,可以有效地繪製您的自定義按鈕。你希望你的漸變是背景,所以確保它是第一個繪製的圖層。更改

layer.addSublayer(gradientLayer)

layer.insertSublayer(gradientLayer, atIndex: 0)

+0

工作就像一個魅力。感謝Curmudgeonlybumbly – Roshan

+0

@beyowulf感謝您的幫助。您的建議將view.frame更改爲self.view.bounds是解決方案的一部分。 – Roshan