不显示在iOS NSTextAttachment图像8设备(具有iOS7.1 SDK)(NSText

2019-10-21 01:37发布

我刚刚建立了我的项目在几个iOS的8台设备与baseSDK设置到iOS 7.1。 不幸的是,所有NSTextAttachment图像添加属性NSMutableAttributedString的相关实例隐藏在iOS 8设备和iOS的8模拟器(他们仍然可见7.1和iOS的7.1模拟器设备)。 他们superviews内对这些字符串的帧设定为如果图像是有,但图像本身是不可见或呈现。

有其他人跑进没有出现在iOS 8文本附件的问题,如果是的话,有没有解决办法? 如果没有,是否有什么错我的代码(粘贴以下)? 这种情况下,特别设置了一个UIButton的标题归属,但我对此是被显示相同的行为简单UILabels附件等情况。

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];

注:我会发表图片来说明,如果我可以,但我没有最小堆栈溢出的声誉这样做。

Answer 1:

我仍然不能确定为什么当与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];


Answer 2:

如果图像仍然没有良好的初始化后显示,它与您的标签/文本的lineBreakMode问题。 图像不能/不得由换行符切割。

只需添加

yourlabel.text.lineBreakMode = NSLineBreakByClipping;

你的代码



文章来源: NSTextAttachment image not displayed on iOS 8 devices (with iOS7.1 sdk)