Ios 如何使用核心图形在'drawRect'中填充unicode符号?

Ios 如何使用核心图形在'drawRect'中填充unicode符号?,ios,core-graphics,mask,Ios,Core Graphics,Mask,我知道我想做什么,但我不知道如何实现它。我是新的核心图形,我甚至不确定这是可能的 我有这样一个unicode符号:♖ 这个符号的白色部分是透明的,我在一个透明的矩形中绘制它,如下所示: - (void)drawRect:(CGRect)rect { NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; textStyle.alignme

我知道我想做什么,但我不知道如何实现它。我是新的核心图形,我甚至不确定这是可能的

我有这样一个unicode符号:♖

这个符号的白色部分是透明的,我在一个透明的矩形中绘制它,如下所示:

- (void)drawRect:(CGRect)rect
{
    NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
    textStyle.alignment = NSTextAlignmentCenter;

    UIFont* myFont = [UIFont fontWithName:@"ArialUnicodeMS" size:80];

    NSDictionary *attrs =
    @{ NSForegroundColorAttributeName : [UIColor blackColor],
       NSFontAttributeName:myFont,
       NSParagraphStyleAttributeName:textStyle
       };


    [[self getStringForValue:_squareValue] drawInRect:rect withAttributes:attrs];

}
我想要的是用白色填充内部透明部分,并使周围的矩形保持透明

我考虑的方法是使用unicode符号作为drawRect中的掩码,将矩形划分为多个区域。然后不填充从0,0开始的区域,而是填充所有其他区域。我可以使用核心图形将符号转换为遮罩,然后识别和填充特定区域吗

我现在得到的是:

但我真正想要的是:

您可以使用-[NSBezierPath appendBezierPathWithGlyph:inFont]然后将颜色设置为白色,并在该路径上调用-fill

编辑:由于您在iOS上,我不知道如何在iOS上获取图示符的路径,因此我只需将图示符绘制到一个填充了100%不透明白色的缓冲区,然后从0,0开始使用纯透明进行整体填充


另一个编辑:使用下面的jrturton代码,您应该能够按照最初的建议在路径上进行简单的白色填充,然后将其划为黑色。

您研究过掩蔽吗?你说得对。我在读苹果的文档,我想我会在那里找到如何做的,但有时会给出一个快速而肮脏的介绍;-)也许会有帮助:不过这只是可可粉;UIBezierPath没有这样的方法。那些蛇贩子!这个类别可能有助于获取路径:@jrturton-这看起来很有用,但是如果您能提供一些关于如何使用它的示例代码,那就太好了。否则,我将尝试找出答案,感谢测试应用程序的屏幕,以防您不想运行iOS模拟器: