相关疑难解决方法(0)

在单行UILabel旁边显示NSTextAttachment图像

我想将NSTextAttachment图像附加到我的属性字符串并使其垂直居中.

我使用以下代码来创建我的字符串

        NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:DDLocalizedString(@"title.upcomingHotspots") attributes:attrs];
        NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
        attachment.image = [[UIImage imageNamed:@"help.png"] imageScaledToFitSize:CGSizeMake(14.f, 14.f)];
        cell.textLabel.attributedText = [str copy];
Run Code Online (Sandbox Code Playgroud)

但是,图像看起来与单元格textLabel的顶部对齐.

在此输入图像描述

如何更改绘制附件的矩形?

objective-c uilabel nstextattachment ios swift

106
推荐指数
8
解决办法
3万
查看次数

如何子类NSTextAttachment?

这是我的问题:

我使用Core Data来存储来自iOS和/或OS X应用程序的富文本输入,并希望将图像粘贴到NSTextView或UITextView中,以便:a)保留其原始分辨率,b)在显示屏上进行缩放以正确调整textView,这意味着根据设备上视图的大小进行缩放.

目前我正在使用- (void)textStorage:(NSTextStorage *)textStorage didProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta查找附件,然后生成具有比例因子的图像并将其分配给textAttachment.image属性.

这样做是因为我只是改变了比例因子并保留了原始图像,但我相信更优雅的解决方案是使用NSTextAttachmentContainer子类并从中返回一个适当大小的CGREct

- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何创建和插入这样的子类?

我是否使用textStorage:didProcessEditing迭代每个附件并将NSTextAttachmentContainer替换为我自己的类,或者我可以简单地创建一个Category,然后以某种方式使用此类别来更改默认行为.后者似乎不那么具有侵入性,但如何让我的textViews自动使用这个类别呢?

糟糕:刚刚注意到NSTextAttachmentContainer是一个协议,所以我假设然后在NSTextAttachment上创建一个类别,并覆盖上面的方法是一个选项.

嗯:不能使用Category来覆盖现有的类方法,所以我想子类化是唯一的选择,在这种情况下如何让UITextView使用我的附件子类,或者我必须迭代使用referencedString来替换所有NSTextAttachments MYTextAttachment的实例.将此字符串取消归档到OS X上会产生什么影响,比如默认的OS X NSTextAttachment(与iOS类不同)?

nstextattachment objective-c-category

13
推荐指数
1
解决办法
7104
查看次数