我想将 UILable 文本字体样式设置为 Small-Caps 格式,如下图所示。
如果有人知道,请给我解决方案,
谢谢。:)
我想将 UILable 文本字体样式设置为 Small-Caps 格式,如下图所示。
如果有人知道,请给我解决方案,
谢谢。:)
如果我没有误会你,这就是你想要的吗?
NSString *uppercaseString = [yourString uppercaseString];
对于 iOS 7 自定义字体,该方法由 Anthony Mattox 描述。对于系统字体我不知道方法。
iOS 中可用的字体没有“大写风格”。您应该添加自己的字体或尝试使用函数 CTFontDescriptorCreateCopyWithFeature 创建字体。
我认为最简单的方法是构建具有混合字体大小的属性字符串(NSAttributedString)。
要使 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 设置,这应该足够简单,以便以后添加。
例子:
你可以试试这个
NSString* str=@"mudit"; label.text=[str 大写字符串];
它会给你这样的输出:MUDIT
试试这个
NSString *string = @"askdfjgjksdfgh";
NSString *upString = [string uppercaseString];
NSLog(@"U %@", upString);
不能更改UILabel
.
你想要做的是有 2 个标签,一个在乞求第一个更大的字母,一个在后面的剩余单词。
为了访问第一个字母和单词的其余部分,您可以使用:
NSString * word = @"COMPLETED";
NSString * firstLetter = [word substringToIndex:1];
NSString * remainingWord = [word substringFromIndex:1];
你在图片中看到的可能是文字的图片而不是UILabel
s。