0

我正在将GLTapLabel用于一个项目,几乎一切工作正常。

当我尝试显示以 a+或任何其他特殊字符开头的文本时,整个内容如下所示:屏幕截图 1(左:模拟器中的输出,右:界面构建器中的文本)。

通常它就像ScreenShot 2中看到的魅力一样。

我认为这与 GLTapLabel.m(在drawTextInRect函数中)的这一行有关:

while ([s scanCharactersFromSet:[NSCharacterSet symbolCharacterSet] intoString:&read])

有什么解决办法吗?我只是错过了什么吗?我以前从来没有用NSScanner.

4

1 回答 1

1

我昨晚刚遇到这个问题,我花了 3 个小时才弄清楚。你在正确的轨道上出了什么问题,但它更多地与范围有关。无论如何忘记这个问题,只需用我的解决方案替换最后一个 while 语句,你应该会很好。我已经添加了一些评论,所以你可以跟着看看我做了什么。享受!

 while ([s scanCharactersFromSet:[NSCharacterSet symbolCharacterSet] intoString:&read]) { //symbolCharacterSet
        for(int idx=0;idx<read.length;idx=idx+6) //For Some Reason "6" works with + sign and Emojis... 

        {

            NSString *word=[read substringFromIndex:0];  //substringWithRange:NSMakeRange(idx, 2)]; <-- I switched out the range and decided to get the WHOLE string.
            CGSize s = [word sizeWithFont:self.font];
            if(drawPoint.x + s.width > rect.size.width) {
                drawPoint = CGPointMake(0, drawPoint.y + s.height);

            }
于 2012-10-24T12:39:56.877 回答