Вы можете увидеть скриншот проблемы здесь
У меня есть NSTextAttachment, который я добавляю внутри UITextView, однако случайно для некоторых фотографий после вставки изображения курсор становится очень большим при редактировании. Я попытался исправить следующее, но безуспешно:
- Установите керн с помощью
NSKernAttributeName
- Установка высоты строки с помощью
NSMutableParagraphStyle
- Установка атрибутов ввода для NSTextAttachment.
NSAttributedString *attachmentImage = [NSAttributedString attributedStringWithAttachment:attachment];
[attachmentImage boundingRectWithSize:image.size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
NSAttributedString *spacer = [[NSAttributedString alloc]initWithString:@"\n\n"];
NSAttributedString *prefixAttachmentString = spacer;
if([self.text isEqualToString:@""]){prefixAttachmentString = [[NSAttributedString alloc]initWithString:@""];} //no spacer if text empty
NSMutableAttributedString *attachmentString = [[NSMutableAttributedString alloc]initWithAttributedString:prefixAttachmentString];
[attachmentString appendAttributedString:attachmentImage];
NSKernAttributeName
NSMutableParagraphStyle *paragraphSytle = [[NSMutableParagraphStyle alloc]init];
NSLog(@"image attachment: %@", attachmentImage);
NSLog(@"image cursor size: %f", image.size.height);
paragraphSytle.paragraphSpacingBefore = 0.0;
paragraphSytle.lineSpacing = 10;
[attachmentString addAttributes:@{@"attachmentName" : name, NSParagraphStyleAttributeName : paragraphSytle}
range:NSMakeRange((int)prefixAttachmentString.length,1)];
[attachmentString addAttributes:self.typingAttr range:NSMakeRange((int)prefixAttachmentString.length,1)];
[attachmentString appendAttributedString:spacer];
[self.textStorage insertAttributedString:attachmentString
atIndex:(int)(self.selectedRange.location)];
[attachmentString addAttributes:self.typingAttr range:NSMakeRange(0,attachmentString.length)];
self.selectedRange = NSMakeRange(self.selectedRange.location+(int)attachmentString.length, self.selectedRange.length);
[self.textStorage endEditing];```