2016-02-29 27 views
7

Ho riscontrato un problema in cui dovevo animare la traduzione di un'etichetta verticalmente alla stessa distanza dell'altezza del testo di un testo. Nella maggior parte dei casi solo textField.bounds.heigt ma se l'altezza del textField è più grande dell'altezza del testo non sarà più utile per me. Quindi ho bisogno di sapere: Come calcolare l'altezza della linea del testo della stringa dal suo UIFont?Swift Come calcolare l'altezza del testo di una riga dal font

Riguardo al duplicato: C'è un po 'diverso da quello che mi serve. quella risposta (a cui ho fatto riferimento nella mia risposta) ottiene l'altezza totale a seconda di 1) della stringa 2) della larghezza 3) del carattere. Quello di cui avevo bisogno è altezza di una riga che si appende solo sul font.

+1

Eventuali duplicati di [Capire dimensione del UILabel sulla base di String a Swift] (http: // StackOverflow. it/questions/30450434/figure-out-size-of-uilabel-based-on-string-in-swift) – TylerH

+0

È un po 'diverso da quello che mi serve. quella risposta (a cui ho fatto riferimento nella mia risposta) ottiene l'altezza totale a seconda di 1) della stringa 2) della larghezza 3) del carattere. Quello di cui avevo bisogno è ** un'altezza di riga che si appunta solo sul font ** – Ismail

risposta

6

UIFont ha un propperty lineHeight smth come questo

 if let font = _textView.font { 
     let height = font.lineHeight 
    } 

cui carattere è il tuo carattere

3

Sono stato alla ricerca di un modo per farlo e trovare questo answer dove ha un'estensione String per calcolare la dimensione per la stringa e un determinato tipo di carattere. Ho modificato per fare ciò che voglio (ottenere l'altezza riga di testo scritto utilizzando un font.):

extension UIFont { 

    var height:CGFloat { 
    let constraintRect = CGSize(width: CGFloat.max, height: CGFloat.max) 

    let boundingBox = "Anytext".boundingRectWithSize(constraintRect, options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName: self], context: nil) 

    return boundingBox.height 
    } 
} 

Spero che questo aiuta qualcuno in cerca di esso. (potrebbe essere me stesso in futuro).