【问题标题】:Unicode symbols in NSString have wrong dimensionNSString 中的 Unicode 符号尺寸错误
【发布时间】:2015-01-21 17:53:42
【问题描述】:

我试图在 UIAlectAction 中放置两个 Unicode 符号。我应该有两个圆圈,一个是空的,另一个是满的。我当前的代码是:

NSString *unicodeStar = [NSString stringWithFormat:@"%C %C", 0x25CB,0x25CF];


    UIAlertAction* star = [UIAlertAction
                                 actionWithTitle:unicodeStar
                                 style:UIAlertActionStyleDefault
                                 handler:^(UIAlertAction * action)
                                 {

                                 [view dismissViewControllerAnimated:YES completion:nil];

                                 }];
    [view addAction:star];

根据Unicode Character Table,这两个符号应该具有相同的尺寸,但实际结果是:

所有其他圆圈的尺寸相同。我错过了什么?

【问题讨论】:

  • 很可能是字体。尝试不同的字体。顺便说一句 - 不需要 stringWithFormat 和十六进制代码。只需:NSString *unicodeStar = @"○ ●";
  • 想找一个更大的,但到目前为止我运气不好
  • 查看我的更新答案。我找到了一对匹配的。

标签: ios objective-c unicode nsstring uialertaction


【解决方案1】:

这是警报视图使用的字体。如果您在 OS X 中使用字符查看器,当您查看“白圈”字符时,它会在您机器上的所有字体中显示相同的字符,并且您可以看到它有很多不同的大小,具体取决于字体。

由于无法更改警报视图使用的字体,因此最好的选择是选择两个不同的字符。有几个未填充的圆圈字符和几个填充的圆圈字符。尝试各种组合,直到找到两个在警报视图使用的标准系统字体中以相同大小显示。

更新:

这是两个大小相同的:

NSString *unicodeStar = @"⚪︎ ⚫︎";

空心圆圈是“MEDIUM WHITE CIRCLE”(U+26AA U+FE0E),实心圆圈是“MEDIUM BLACK CIRCLE”(U+26AB U+FE0E)。

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多