Ich habe eine veränderbare attributierte Zeichenfolge ohne das Attribut NSStrikethroughStyleAttributeName wie folgt:
%Vor%und eine andere veränderbare attributierte Zeichenfolge mit dem Attribut NSStrikethroughStyleAttributeName wie folgt:
%Vor%und eine ganze Zeichenfolge, die zwei Strings enthält:
%Vor%wenn ich den ganzen String an ein UILabel anschließe:
%Vor%Bei iOS7 und iOS8 wird beides gut angezeigt:
aaaa bbbb
Aber wenn ich ihre Positionen tausche:
%Vor%Es wird korrekt in iOS7 angezeigt, aber nicht korrekt in iOS8
ios7: bbbb aaaa ios8: bbbbaaaa
Es scheint, dass UILabel in iOS8 die Durchstreichung nicht korrekt darstellt, wenn das erste Zeichen in der attributierten Zeichenfolge nicht durchgestrichen ist. Ich denke, das ist ein Fehler in iOS8, gibt es jemanden, der das gleiche Problem mit mir begegnet?
Auf iOS8.1.1 haben wir mehr Probleme mit der Einstellung NSMutableAttributedString , wie mit NSStrikethroughStyleAttributeName .
Wenn sich Ihre Attribute nicht ändern, versuchen Sie dies und es wird.
Ich begann mit dem UILabel zu argumentieren, das sind spirit-chaneger-Attribute. Wenn wir also davon ausgehen, dass der NSStrikethroughStyleAttributeName den Label-Text nicht initialisiert hat, müssen wir ihn initialisieren.
Was ich tue ist die Initialisierung von mutableAttributedString durch einen none NSStrikethroughStyleAttributeName und das Ändern dieses Attributs zum Hervorheben: Ergebnis ist:
%Vor%
effektives Ergebnis & lt; = iOS8.1.1
Fix für den Fehler in iOS8: Strike Through ersten Buchstaben der Zeichenfolge mit klarer Farbe und dann Strike durch den Text, in dem je Bereich möchten Sie.
Wenn du NSStrikethroughStyleAttributeName
hinzufügst, solltest du auch NSBaselineOffsetAttributeName
hinzufügen, was auf 0 gesetzt ist. Und in swift solltest du den rawValue von NSUnderlineStyl
e verwenden.
Bildbeschreibung hier eingeben
Tags und Links ios ios8 nsattributedstring strikethrough nsmutableattributedstring