Guardando la documentazione per NSLayoutManager
, in particolare il metodo drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:, ho notato quanto segue (sottolineatura mia):Come definire un costume NSUnderlineStyle
underlineVal
Lo stile di sottolineatura da disegnare. Questo valore è una maschera derivata dal valore perNSUnderlineStyleAttributeName
, ad esempio, (NSUnderlinePatternDash
|NSUnderlineStyleThick
). Le sottoclassi possono definire stili di sottolineatura personalizzati.
La mia domanda è: come è esattamente ciò che si intende fare?
NSUnderlineStyle
è un enum, che non è possibile estendere o sovrascrivere. Ovviamente si può fornire un valore casuale grezzo Int
per l'attributo, non coperta dai casi enum:
self.addAttribute(NSUnderlineStyleAttributeName, value: 100022, range: lastUpdatedWordRange)
che fornirà un "non valido" ma utilizzabile underlineType
al layout Manger:
Ma questo sembra poco sicuro ed è decisamente poco elegante.
Non sono stato in grado di trovare alcun esempio online o ulteriori indizi nella documentazione Apple su come appaiono questi mitici tipi di stile di sottolineatura personalizzati. Mi piacerebbe sapere se mi manca qualcosa di ovvio.
NSUnderlineStyle sembra essere un povero t giocatore di eam. È scarsamente documentato e, in Swift, non è stato ancora convertito in set di opzioni. Quando si leggono le bandiere in uno stile dato, sembra inaffidabile (oppure sto facendo qualcosa di sbagliato). Vorrei poterti aiutare di più, ma sto ancora indagando su una soluzione ... –