IOS создает текстовый формат с использованием устаревшего метода CGSize

Привет я воссоздаю тексты с этим кодом

CGSize textSize = [self.text sizeWithFont:self.font
                        constrainedToSize:self.frame.size
                            lineBreakMode:self.lineBreakMode];

вышесказанное является амортизацией. как мы можем изменить это в порядке, чтобы сохранить цель?

Любая помощь очень ценится. Спасибо!

Моя цель - выровнять верхнюю часть UIlable (по вертикали)

- (void)alignTop
{
    CGSize textSize = [self.text sizeWithFont:self.font
                            constrainedToSize:self.frame.size
                                lineBreakMode:self.lineBreakMode];

    CGRect textRect = CGRectMake(self.frame.origin.x,
                                 self.frame.origin.y,
                                 self.frame.size.width,
                                 textSize.height);
    [self setFrame:textRect];
    [self setNeedsDisplay];
}

1 ответ

Решение

Использовать этот

 - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context

ИЛИ использовать это

 - (CGSize)sizeWithAttributes:(nullable NSDictionary<NSString *, id> *)attrs

это пример

+ (CGSize)neededSizeForText:(NSString*)text withFont:(UIFont*)font andMaxWidth:(float)maxWidth
{
    NSStringDrawingOptions options = (NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin);

    NSMutableParagraphStyle * style =  [[NSMutableParagraphStyle alloc] init];
    [style setLineBreakMode:NSLineBreakByWordWrapping];
    [style setAlignment:NSTextAlignmentRight];

    NSDictionary *textAttibutes = @{NSFontAttributeName : font,
                                    NSParagraphStyleAttributeName : style};

    CGSize neededTextSize = [text boundingRectWithSize:CGSizeMake(maxWidth, 500) options:options attributes:textAttibutes context:nil].size;

    return neededTextSize;
}

надеюсь, это поможет

Другие вопросы по тегам