Die Anwendung, an der ich arbeite, hat beim Testen mit iOS 10.3 Simulator über XCode 8.3 Beta 2 ein Problem festgestellt, wobei der hochgestellte String in AttributedString in derselben Zeile mit normalem Text angezeigt wird. Für iOS 10.2.x und darunter wird es korrekt angezeigt.Swift 3.1 - NSSuperScript in NSAttributedString funktioniert nicht wie erwartet
iOS 10.3 Screenshot: https://www.dropbox.com/s/p5v71g722cg5qhy/Screen%20Shot%202017-02-21%20at%2010.24.21%20AM.png?dl=0
iOS 10.2.x und unten Screenshot: https://www.dropbox.com/s/lcfsic6xyz953qp/Screen%20Shot%202017-02-21%20at%2010.19.17%20AM.png?dl=0
Hier ist, wie ich den Text behandelt:
- zunächst die Zeichenfolge im HTML-Format, und Marke für den Text "8,9" über
<html>
<head>
<style> body { color: #554344 ; font-family: \'MyCustomFont\'; font-size: 18px; } sup { font-size: 13px; } </style>
</head>
<body>
ABCdef<sup>1,2,3,8,9</sup>
</body>
</html>
- Die HTML-String dann in NSAttributedString mit dem folgenden Skript
private func convertHTMLToAttributedString(string: String) -> NSAttributedString {
guard let data = string.data(using: String.Encoding.utf16, allowLossyConversion: false) else { return NSAttributedString() }
return try! NSAttributedString(
data: data,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
}
- Die NSAttributedString wird dann vi gemacht werden ein UILabel.attributedText Dies ist die attributedText Beschreibung:
1,2,3,8,9{
NSColor = "kCGColorSpaceModelRGB 0.333333 0.262745 0.266667 1 ";
NSFont = "<UICTFont: 0x7fed0a469880> font-family: \"MyCustomFont\"; font-weight: normal; font-style: normal; font-size: 10.00pt";
NSKern = 0;
NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 13/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n), DefaultTabInterval 36, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0";
NSStrokeColor = "kCGColorSpaceModelRGB 0.333333 0.262745 0.266667 1 ";
NSStrokeWidth = 0;
NSSuperScript = 1;
}
Hinweis: Ich dachte, das Problem auf unsere eigene Schriftart verwandt war, aber das Problem immer noch passieren, wenn wir die Standardschriftart verwenden .
Ist dies ein Problem mit Swift 3.1 und sollte behoben werden?
I (scheint 'NSSuperScript' keine Wirkung zu haben) hat vor kurzem die gleiche Wirkung entdeckt innerhalb eine Mac OS App. – ixany