2017-08-10 6 views
1

Hallo, ich versuche einige Stile auf IBOutlets von Swift 3 Code anzuwenden. Aber wenn ich versuche, die IBOutlet von meinem Code beziehen, funktioniert nur, wenn ich die sofort überlegene UIView als IBOutlet hinzufügen.So verweisen Sie auf eine Subview-Hierarchie in swift

Zum Beispiel (Hinzufügen von Schriftstil auf alle Kennzeichnungselemente innen View):

Erklärung

@IBOutlet var exampleView: UIView! 

Innen ViewDidLoad() func

for case let label as UILabel in exampleView.subviews { 
      label.font = UIFont(name: "myfont-name", size: 13.0) 
} 

In diesem Fall wird die label ist ein sofortiges Kind der exampleView und das funktioniert gut. Aber ich möchte allgemeineren Code für die dynamische Änderung der Schriftart in meiner App vornehmen.

Wenn ich versuche, auf self.view.subviews für die Schleife alle Labels keine Mather Hierarchie Tiefe der Code nicht funktionieren.

Beispiel:

for case let label as UILabel in self.view.subviews { 
      label.font = UIFont(name: "myfont-name", size: 13.0) 
} 

Antwort

3

Verwendung Rekursion für diese

func setFontToSubviews(view:UIView, font: UIFont) { 
    for subview in view.subviews { 
     if let label = subview as? UILabel { 
      label.font = font 
     } 
     setFontToSubviews(view:subview, font:font) 
    } 
} 

und dieses Verfahren mit der erforderlichen Ansicht und Schriftart aufzurufen.

+0

Vielen Dank. Sehr hilfreich – eifersucht

Verwandte Themen