2016-09-01 4 views
0

ich einige Funktionen in Verlängerung UILabel im folgenden Code erwähnt definiert haben:Schriftart ändert sich nicht durch UILabel Erweiterung

extension UILabel{ 

    func decreaseFontSize() { 
     print("before: \(self.font.pointSize)") 
     self.font = UIFont(name: self.font.fontName, size: self.font.pointSize-10)! 
     print("after: \(self.font.pointSize)") 
    } 

    func setBold() { 
     self.font = UIFont.boldSystemFontOfSize(15) 
    } 

    func setSecondaryColor() { 
     self.textColor = UIColor.redColor() 
    } 


} 

Wenn ich jetzt decreaseFontSize auf dem UILabel Objekt aufrufen, ich die erwartete Ausgabe in der Konsole erhalten:

before: 17.0 
after: 7.0 

Aber die Schriftgröße ändert sich wirklich nicht. Das Gleiche passiert mit setBold Funktion. setSecondaryColor spiegelt jedoch die geänderte Farbe wider.

So, wie die Schriftart durch Erweiterung ändern?

Antwort

0

Ich habe Ihren Code getestet und es funktioniert gut.

enter image description here

enter image description here

Haben Sie nicht etwas Wichtiges verpasst? Überprüfen Sie meinen Code und vielleicht finden Sie es heraus.

import UIKit 

class MyCell : UITableViewCell {   
    @IBOutlet weak var myLabel: UILabel!   
} 

class TableViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    }  
    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    }  
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 20 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) as! MyCell 
     cell.myLabel.text = "ABC \(indexPath.row)" 
     cell.myLabel.decreaseFontSize() 
     return cell 
    } 
} 

extension UILabel{ 
    func decreaseFontSize() { 
     print("before: \(self.font.pointSize)") 
     self.font = UIFont(name: self.font.fontName, size: self.font.pointSize-10)! 
     print("after: \(self.font.pointSize)") 
    } 
} 
+0

Mit meinem genauen Code, können Sie einige Fehler bekommen, wie ich meinen Code in Swift 3.0 ... – pedrouan

0

Der Aufruf des Codes innerhalb viewDidLayoutSubviews hat den Trick gemacht.

override func viewDidLayoutSubviews() { 

     myLabel.setBold() 

    } 
Verwandte Themen