我想将UILabel文本字体样式设置为Small-Caps格式,如下图所示。
如果有人知道,请给我解决方案,
感谢。 :)
答案 0 :(得分:11)
如果我没有弄错你,这就是你想要的吗?
NSString *uppercaseString = [yourString uppercaseString];
答案 1 :(得分:4)
iOS中可用的字体没有“资本风格”。您应该添加自己的字体或尝试使用函数CTFontDescriptorCreateCopyWithFeature创建字体 我认为最简单的方法是使用混合字体大小构建属性字符串(NSAttributedString)。
答案 2 :(得分:3)
对于iOS 7自定义字体,此方法由Anthony Mattox描述。对于系统字体我不知道如何。
答案 3 :(得分:1)
你可以试试这个
NSString * str = @“mudit”; label.text = [str uppercaseString];
它将为您提供如下输出:MUDIT
答案 4 :(得分:1)
要将UILabel渲染为大写字符串,每个单词的第一个字母较大,您可以执行以下操作:
@implementation CapitalicTextLabel
- (void)drawRect:(CGRect)rect
{
// Drawing code
NSArray* words = [self.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetCharacterSpacing(context, 1);
CGContextSetFillColorWithColor(context, [self.textColor CGColor]);
CGAffineTransform myTextTransform = CGAffineTransformScale(CGAffineTransformIdentity, 1.f, -1.f );
CGContextSetTextMatrix (context, myTextTransform);
CGFloat x = 0;
float centeredY = (self.font.pointSize + (self.frame.size.height - self.font.pointSize) / 2) - 2;
CGFloat firstLetterSize = self.font.pointSize * 1.4;
for (NSString* word in words)
{
NSString* letter = [[word substringToIndex:1] uppercaseString];
CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], firstLetterSize, kCGEncodingMacRoman);
CGContextShowTextAtPoint(context, x, centeredY, [letter cStringUsingEncoding:NSASCIIStringEncoding], [letter length]);
x = CGContextGetTextPosition(context).x;
NSString* restOfWord = [[[word substringFromIndex:1] uppercaseString] stringByAppendingString:@" "];
CGContextSelectFont(context, [self.font.fontName cStringUsingEncoding:NSASCIIStringEncoding], self.font.pointSize,
kCGEncodingMacRoman);
CGContextShowTextAtPoint(context, x, centeredY, [restOfWord cStringUsingEncoding:NSASCIIStringEncoding], [restOfWord length]);
CGPoint v = CGContextGetTextPosition(context);
x = CGContextGetTextPosition(context).x;
}
}
@end
此实现不处理跨多行的分割或遵循TextAlignment设置,这应该足够简单,以便随后添加。
示例:
答案 5 :(得分:0)
试试这个
NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);
答案 6 :(得分:0)
无法在UILabel
内更改单个字母的字体大小或类型。
你想要做的是拥有2个标签,一个是在第一个更大的字母的乞讨中,另一个是在剩余的单词之后。
为了访问第一个字母和单词的其余部分,您可以使用:
NSString * word = @"COMPLETED";
NSString * firstLetter = [word substringToIndex:1];
NSString * remainingWord = [word substringFromIndex:1];
你在图片中看到的可能是单词的图片,而不是UILabel
s。