gpt4 book ai didi

ios - 如何在 NSTextAttachment 中设置模板图像的颜色

转载 作者:IT王子 更新时间:2023-10-29 07:57:26 29 4
gpt4 key购买 nike

如何设置作为属性字符串附件的模板图像的颜色?

背景:

我有一个 UILabel,我正在将它的 attributedText 设置为 NSAttributedString。 NSAttributedString 包含一个带有小图像的 NSTextAttachment。现在我想让我的图像颜色与文本颜色匹配,但我不知道如何让它工作。

我通常希望通过将渲染模式设置为 UIImageRenderingModeAlwaysTemplate 然后在包含的 UIView 上设置 tintColor 来为图像着色。我试过在我的 UILabel 上设置 tintColor,但这没有效果。

这是我的代码。它是用 Ruby (RubyMotion) 编写的,所以语法可能看起来有点滑稽,但它与 Objective C 是 1:1 的。

attachment = NSTextAttachment.alloc.initWithData(nil, ofType: nil)
attachment.image = UIImage.imageNamed(icon_name).imageWithRenderingMode(UIImageRenderingModeAlwaysTemplate)

label_string = NSMutableAttributedString.attributedStringWithAttachment(attachment)
label_string.appendAttributedString(NSMutableAttributedString.alloc.initWithString('my text', attributes: { NSFontAttributeName => UIFont.preferredFontForTextStyle(UIFontTextStyleFootnote), NSForegroundColorAttributeName => foreground_color }))

label = UILabel.alloc.initWithFrame(CGRectZero)
label.tintColor = foreground_color
label.attributedText = label_string
label.textAlignment = NSTextAlignmentCenter
label.numberOfLines = 0

最佳答案

看来 UIKit 中有一个错误。有一个解决方法;]

出于某种原因,您需要在图像附件之前附加空白区域,以使其与 UIImageRenderingModeAlwaysTemplate 一起正常工作。

所以你的代码片段看起来像这样(我的代码在 ObjC 中):

- (NSAttributedString *)attributedStringWithValue:(NSString *)string image:(UIImage *)image {
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = image;

NSAttributedString *attachmentString = [NSAttributedString attributedStringWithAttachment:attachment];
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString:[[NSAttributedString alloc] initWithString:@" "]];
[mutableAttributedString appendAttributedString:attachmentString];
[mutableAttributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:0] range:NSMakeRange(0, mutableAttributedString.length)]; // Put font size 0 to prevent offset
[mutableAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, mutableAttributedString.length)];
[mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@" "]];

NSAttributedString *ratingText = [[NSAttributedString alloc] initWithString:string];
[mutableAttributedString appendAttributedString:ratingText];
return mutableAttributedString;
}

关于ios - 如何在 NSTextAttachment 中设置模板图像的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041458/

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