Dal apple docs:
Questa proprietà è pari a zero per impostazione predefinita. L'assegnazione di un nuovo valore a questa proprietà sostituisce anche il valore della proprietà di testo con gli stessi dati di stringa, sebbene senza alcuna informazione di formattazione. Inoltre, l'assegnazione di un nuovo valore aggiorna i valori nel carattere, nel testoColore e in altre proprietà correlate allo stile in modo che riflettano le informazioni di stile che iniziano alla posizione 0 nella stringa attribuita.
Hai ragione, non è possibile scoprirlo controllando l'uno o l'altro per zero. Un modo si può sapere che il testo viene attribuito potrebbe essere quella di usare qualcosa come:
NSMutableArray *strAttrs = [NSMutableArray new];
NSMutableArray *strRanges = [NSMutableArray new];
[label.attributedText enumerateAttributesInRange:NSMakeRange(0, label.attributedText.length) options:0 usingBlock:^(NSDictionary *attrs, NSRange range, BOOL *stop) {
[strAttrs addObject:attrs];
[strRanges addObject:[NSValue valueWithRange:(range)]];
}];
In questo modo si potrebbe ottenere vedere se più di un attributo è lì. È anche possibile confrontare gli attributi indipendentemente dal fatto che corrispondano agli attributi standard e assumere che la proprietà text sia stata impostata solo in questo caso.
fonte
2015-05-12 15:24:25
cosa stai cercando di realizzare da capire questo? – ColdLogic
Indicare che si intende controllare * a livello di codice * se un'etichetta ha attribuito Testo (se questo è in realtà ciò che si intende). –