我刚刚在几台iOS 8设备上构建了我的项目,其中baseSDK设置为iOS 7.1。 不幸的是,作为属性添加到NSMutableAttributedString的相关实例的所有NSTextAttachment图像都隐藏在iOS 8设备和iOS 8模拟器上(它们仍然在具有7.1和iOS 7.1模拟器的设备上可见)。超视图中这些字符串的框架设置为好像图像在那里,但图像本身不可见或呈现。
是否有其他人遇到过没有出现在iOS 8上的文字附件问题。如果有,是否有解决方法?如果没有,我的代码是否有问题(粘贴在下面)?此实例特别为UIButton设置了一个属性标题,但我有其他实例的附件是简单的UILabel,它们显示相同的行为。
NSMutableAttributedString *attrButtonTitle = [[NSMutableAttributedString alloc] initWithString:@"Let's go!"];
NSTextAttachment *doubleArrowIcon = [[NSTextAttachment alloc] initWithData:nil ofType:nil];
doubleArrowIcon.image = [UIImage imageNamed:@"double-arrows"];
[attrButtonTitle appendAttributedString:[[NSAttributedString alloc] initWithString:@" " attributes:@{NSAttachmentAttributeName : doubleArrowIcon, NSBaselineOffsetAttributeName : @(-2)}]];
[self.nextButton setAttributedTitle:attrButtonTitle forState:UIControlStateNormal];
注意:我会发布图片以说明我是否可以,但我没有最低的堆栈溢出声誉。
答案 0 :(得分:2)
我仍然不确定为什么上面的代码在使用7.1 SDK编译时不会在iOS8设备上显示图像,但我找到了一种解决方法。我尝试了具有文本附件的NSMutableAttributedString的不同初始化方法,直到我得到了完成工作的东西。代码如下:
NSTextAttachment *doubleArrowIcon = [[NSTextAttachment alloc] initWithData:nil ofType:nil];
doubleArrowIcon.image = [UIImage imageNamed:@"double-arrows"];
NSAttributedString *textAttachment = [NSAttributedString attributedStringWithAttachment:doubleArrowIcon];
NSMutableAttributedString *mutableTextAttachment = [[NSMutableAttributedString alloc] initWithAttributedString:textAttachment];
[mutableTextAttachment addAttribute:NSBaselineOffsetAttributeName value:[NSNumber numberWithInt:-2] range:NSMakeRange(0, [textAttachment length]) ];
[attrButtonTitle appendAttributedString:mutableTextAttachment];
答案 1 :(得分:0)
如果您的图像在良好初始化后仍未显示,则标签/文本的lineBreakMode存在问题。 lineBreak不能/不能剪切图像。
只需添加
yourlabel.text.lineBreakMode = NSLineBreakByClipping;
到你的代码