gpt4 book ai didi

ios - 带有 UTF-8 字符串的 UITableView header ?

转载 作者:行者123 更新时间:2023-11-28 19:06:08 24 4
gpt4 key购买 nike

我正在使用 Unix %s 格式化我的 UITableView header ,因为 Objective C 格式代码 %@ 不处理填充(例如 %20@%20s)。不幸的是,如果我有带重音的外国字符,它们将无法正确显示。 “voilà”这个词看起来像这样:

enter image description here

下面是我如何生成表格标题:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
...
//NSString *tblHdr = [NSString stringWithFormat:@"%12s", @"voilà"];
NSString *tblHdr = [NSString stringWithFormat:@"%12s", [@"voilà" UTF8String]]; // Fixed example
...
return tblHdr;
}

[更新]

这是我项目的实际代码。我试图在我的原始示例中保持简单:

        tblHdr = [NSString stringWithFormat:@"%-45s%12s%12s%35s",
[NSLocalizedString(@"Quiz Name", @"") UTF8String],
[NSLocalizedString(@"Correct", @"") UTF8String],
[NSLocalizedString(@"Missed", @"") UTF8String],
[NSLocalizedString(@"Score", @"") UTF8String]
];

最佳答案

%s 格式似乎需要系统编码中的 C 字符串,所以这行得通

NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(CFStringGetSystemEncoding());
NSString *s = [NSString stringWithFormat:@"%12s", [@"voilá" cStringUsingEncoding:enc]];

(只要能用系统编码表示的字符串即可)

否则你可以手动填充字符串:

NSString *t = @"voilá";
if ([t length] < 12) {
t = [[@"" stringByPaddingToLength:(12 - [t length]) withString:@" " startingAtIndex:0] stringByAppendingString:t];
}

(或者使用@Daij-Djan 的方法,这是我在写这篇文章时发布的)。

关于ios - 带有 UTF-8 字符串的 UITableView header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20383432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com