Ответ 1
NSTextAttachments
рассматриваются как один символ с помощью NSAttributedString
. Таким образом, чтобы настроить их выравнивание, вы должны сделать это так же, как и для текста. Мне потребовалось несколько часов, чтобы поиграть с attachment.bounds
(который я никогда не мог нормально работать), чтобы наконец понять это. Здесь приведен пример горизонтального выравнивания NSTextAttachment
.
#def BETWEEN_SECTION_SPACING 10
// creates a text attachment with an image
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
attachment.image = [UIImage imageNamed:@"sample_image.jpg"];
NSMutableAttributedString *imageAttrString = [[NSAttributedString attributedStringWithAttachment:attachment] mutableCopy];
// sets the paragraph styling of the text attachment
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init] ;
[paragraphStyle setAlignment:NSTextAlignmentCenter]; // centers image horizontally
[paragraphStyle setParagraphSpacing:BETWEEN_SECTION_SPACING]; // adds some padding between the image and the following section
[imageAttrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [imageAttrString length])];
После этого вы добавите imageAttrString
к существующей атрибутной строке и, возможно, добавите другую после нее. Одна из причуд заключается в том, что, поскольку вложение является персонажем, оно не рассматривается как его собственный абзац. Для этого вам необходимо окружить его \n
(символы новой строки). Просто добавьте их к обеим сторонам прикрепленной строки привязки.
Надеюсь, что это поможет, мне потребовались годы, чтобы понять.