我想在iOS上垂直绘制一个NSAttributedString
(或NSString
)。“垂直”是指:
Apple的文档说的标准属性NSAttributedString
是NSVerticalGlyphFormAttributeName
,但不幸的是:
“在iOS中,始终使用水平文本,并且未指定其他值。”
同一份文件还提到NSTextLayoutSectionsAttribute
,这似乎支持NSTextLayoutOrientation
,允许NSTextLayoutOrientationHorizontal
或NSTextLayoutOrientationVertical
。
目前,这4个术语均未对SO产生任何影响。只是那寂寞的啸声。
但是,我不知道如何设置它,无论它是与iOS一起使用,还是可以用于样式的垂直字符串渲染[myAttributedString drawAtPoint: whereItOughtaGo]
。
谢谢。
如果您的示例中只有一行文本,则可以使用各种解决方法。我将亲自创建一个UILabel
子类,如下所示:
@implementation VerticalLabel
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
self.numberOfLines = 0;
}
return self;
}
- (void)setText:(NSString *)text {
NSMutableString *newString = [NSMutableString string];
for (int i = text.length-1; i >= 0; i--) {
[newString appendFormat:@"%c\n", [text characterAtIndex:i]];
}
super.text = newString;
}
@end
现在您只需要替换:
UILabel *lbl = [[UILabel alloc] init];
与:
UILabel *lbl = [[VerticalLabel alloc] init];
获取垂直文本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句