2017-09-15 2 views
3

Ich habe eine Erweiterung von CALayer für Rahmenfarbe als Laufzeitattribut, aber es funktioniert nicht.Laufzeit BorderColor funktioniert nicht in Xcode 9

Es zeigt nur die Standardfarbe Schwarz.

extension CALayer { 
    var borderUIColor: UIColor { 
     set { 
      self.borderColor = newValue.cgColor 
     } 

     get { 
      return UIColor(cgColor: self.borderColor!) 
     } 
    } 
} 

enter image description here

+1

Sie benötigen keine Erweiterung. Sie können direkt aus dem _Identity Inspector von Xcode auf die 'borderColor' der Ebene zugreifen. – clemens

+0

Es gibt keine solche Funktionalität, denke ich. – nirav

+0

@macmoonshine: Ich schätze, Sie können layer.borderColor in benutzerdefinierten Laufzeitattributen Abschnitt –

Antwort

0

Try this:

extension UILabel{ 
    func setBorderColor(width:CGFloat,color:UIColor) -> Void 
    { 
     self.layer.borderColor = color.cgColor 
     self.layer.borderWidth = width 
    } 
} 

und implementieren diese Funktion, wo immer Sie wollen, wie diese

label.setBorderColor(width: 2.0, color: UIColor.brown) 

hoffe, das hilft!

+0

Dies ist kein guter Weg, um das zu lösen ... – nirav

1

Sie sollten nil Werte mit Vorsicht handhaben und kann eine Verlängerung UIView erstellen, die die Eigenschaft als @IBInspectabe erklärt:

import UIKit 

extension UIView { 
    @IBInspectable var borderColor: UIColor? { 
     get { 
      if let color = layer.borderColor { 
       return UIColor(cgColor: color) 
      } 
      else { 
       return nil 
      } 
     } 
     set { layer.borderColor = newValue?.cgColor } 
    } 
} 

Dies macht es viel einfacher, die Rahmenfarbe in Attribut-Inspektor zu setzen.

EDIT: Ihr Beispiel funktioniert für mich auch mit Xcode 9.0 und 8.3.3. Wahrscheinlich war es ein Bug in einer Beta-Version.

+1

Dies beantwortet nicht die Frage, warum ihre Lösung funktioniert nicht. –

+0

@BryanBryce: Entschuldigung, ich konnte letzte Woche keinen ausführlicheren Grund angeben. Ich denke, das war ein Problem in einer Beta-Version von Xcode. Die Erweiterung von _nirav_ funktioniert wie erwartet. – clemens