我正在开发我的应用程序的新版本,并试图替换不推荐使用的消息,但无法通过此消息。

我不知道为什么drawInRect:withAttributes无法正常工作。发送drawInRect:withFont:lineBreakMode:alignment消息时,该代码可以正确显示,但是发送drawInRect:withAttributes时,该代码不起作用。

我使用的是相同的rect和字体,我相信是相同的文本样式。常量只是将rect定位在图像下方,但是我在两个调用中都使用了相同的rect,所以我确定矩形是正确的。

(请注意,下面使用的 bs.name 是一个NSString对象)

        CGRect textRect = CGRectMake(fCol*kRVCiPadAlbumColumnWidth,
                                     kRVCiPadAlbumColumnWidth-kRVCiPadTextLabelYOffset,
                                     kRVCiPadAlbumColumnWidth,
                                     kRVCiPadTextLabelHeight);
        NSMutableParagraphStyle *textStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
        textStyle.lineBreakMode = NSLineBreakByWordWrapping;
        textStyle.alignment = NSTextAlignmentCenter;
        UIFont *textFont = [UIFont systemFontOfSize:16];

使用上面的变量,这不起作用(屏幕上没有任何内容)
        [bs.name drawInRect:textRect
             withAttributes:@{NSFontAttributeName:textFont,
                              NSParagraphStyleAttributeName:textStyle}];

使用上面的相同变量,可以正常工作(在屏幕上正确绘制了字符串)
        [bs.name drawInRect:textRect
                   withFont:textFont
              lineBreakMode:NSLineBreakByWordWrapping
                  alignment:NSTextAlignmentCenter];

任何帮助将是巨大的。谢谢。

最佳答案

要设置文本的颜色,您需要在属性中传递NSForegroundColorAttributeName作为附加参数。

NSDictionary *dictionary = @{ NSFontAttributeName: self.font,
                              NSParagraphStyleAttributeName: paragraphStyle,
                              NSForegroundColorAttributeName: self.textColor};

09-26 15:57