ios NSTextAttachment не может установить нулевое смещение базовой линии - PullRequest
0 голосов
/ 06 ноября 2018
NSMutableAttributedString *attrString = ({

    // words
    NSAttributedString *leftString = [[NSAttributedString alloc] initWithString:@"好" attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:10]}];

    // image
    NSAttributedString *attachString = ({
        UIImage *image = [UIImage imageNamed:@"项目标签"];
        NSTextAttachment *attach = [NSTextAttachment new];
        attach.image = image;

        [NSAttributedString attributedStringWithAttachment:attach];
    });

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithAttributedString:leftString];
    [attrString appendAttributedString:attachString];

    // set line-height
    NSMutableParagraphStyle *style = [NSMutableParagraphStyle new];
    style.maximumLineHeight = 22.5;
    style.minimumLineHeight = 22.5;

    [attrString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, attrString.length)];

    // set baselineOffset
    [attrString addAttribute:NSBaselineOffsetAttributeName value:@0 range:NSMakeRange(0, attrString.length)];

    attrString;
});

Если перед вложением изображения есть несколько слов, baselineOffset для атрибута String изображения не может быть установлено в 0.

вот демонстрационный проект

here is the screenshot

1 Ответ

0 голосов
/ 06 ноября 2018

Я решил это сам.

Просто установите в NSTextAttachment bound.origin.y значение для потомка шрифта.

...