NSTextAttachment對(duì)象通常與NSAttributedString配合使用蹭睡,作為一個(gè)NSAttributedString對(duì)象的屬性存儲(chǔ)(attachment)著嚷狞,對(duì)應(yīng)的key為NSAttachmentAttributeName阔逼。我們創(chuàng)建的NSTextAttachment也不過是NSAttributedString的一個(gè)附加邮绿。
一個(gè)NSTextAttachment可以包含NSData或者NSFileWrapper對(duì)象,我們可以通過修改NSTextAttachment的一些屬性來更改這些數(shù)據(jù)顯示時(shí)候的外觀镀层。
經(jīng)常會(huì)有這樣的需求镰禾,文字的后面緊跟著一張小圖,然后整體保持居中處理唱逢。對(duì)于不固定長(zhǎng)度的文字吴侦,這個(gè)處理起來就比較棘手了。
但是借助NSTextAttachment和NSAttributedString 配合使用坞古,我們只要設(shè)置UILabel的屬性textAlignment居中即可备韧。
- (void)viewDidLoad {
[super viewDidLoad];
//創(chuàng)建一個(gè)普通的Label
UILabel *testLabel = [[UILabel alloc] init];
//中央對(duì)齊
testLabel.textAlignment = NSTextAlignmentCenter;
testLabel.backgroundColor = [UIColor purpleColor];
testLabel.numberOfLines = 0;
testLabel.frame = CGRectMake(0, 200, self.view.frame.size.width, 300);
[self.view addSubview:testLabel];
//設(shè)置Attachment
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
//使用一張圖片作為Attachment數(shù)據(jù)
attachment.image = [UIImage imageNamed:@"test"];
//這里bounds的x值并不會(huì)產(chǎn)生影響
attachment.bounds = CGRectMake(-600, 0, 20, 10);
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"這是一串字"];
[attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];
testLabel.attributedText = attributedString;
}
效果:
試了下GIF轉(zhuǎn)換成NSData之后可以顯示靜態(tài)圖,視頻無法正常顯示绸贡。
要想使用有一定格式的NSData盯蝴,還需要參考以下兩個(gè)文件
#import <MobileCoreServices/UTType.h>
#import <MobileCoreServices/UTCoreTypes.h>
因?yàn)樘O果在NSTextAttachment中接受的格式必須是UTI格式的。