2017-09-19 2 views
0

Ich habe eine Frage zum Erstellen einer benutzerdefinierten UIColor in Swift.Erstellen von benutzerdefinierten Farbe für UIColor

ich verwenden, um den folgenden Erweiterungscode:

import UIKit 

extension UIColor { 
    convenience init(red: Int, green: Int, blue: Int) { 
    let newRed = CGFloat(red)/255 
    let newGreen = CGFloat(green)/255 
    let newBlue = CGFloat(blue)/255 

    self.init(red: newRed, green: newGreen, blue: newBlue, alpha: 1.0) 


    } 
} 

let brandBlue = UIColor(red: 0, green: 127, blue: 255) 

Ich mag es laden, shadow unter dem folgenden Code:

class squareButton : UIButton { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = (Loading code here) 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = (Loading code here) 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 
} 

Aber jede Kombination, die ich verwenden, wird nicht funktionieren. Jedes Mal, wenn es heißt, dass ich es benutzen soll! CGColor, aber wenn ich das mache, stürzt die App ab.

Bitte helfen Sie mir

Danke

+0

Benötigen Sie weitere Hilfe zu diesem Thema? Wenn es hilfreich wäre, wäre es großartig, wenn Sie meine Antwort als die richtige markieren könnten. Vielen Dank – AlexWoe89

Antwort

3

In Ihrem Code Sie derzeit bieten zu self.layer.shadowColor = (Loading code here) ein UIColor dies sollte einen Compiler-Fehler verursachen.

Die von Ihnen erstellte Erweiterung ist in Ordnung. Verwenden Sie einfach die .cgColor-Eigenschaft von UIColor, nachdem Sie Ihre neue UIColor-Instanz instanziiert haben. Dies wäre dann der Beispielcode:

class SquareButton: UIButton { 

    let brandBlue: UIColor = UIColor(red: 0, green: 127, blue: 255) 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = brandBlue.cgColor 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = brandBlue.cgColor 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 
} 
1

CGColor und UIColor sind nicht die gleichen und CALayer.shadowColor Bedürfnisse ein CGColor sein. Sie können einen CGColor von einem UIColor erhalten, indem Sie die cgColor Eigenschaft auf einer UIColor Instanz aufrufen.

So: self.layer.shadowColor = UIColor(red: 0, green: 127, blue: 255).cgColor

Verwandte Themen