2016-03-31 2 views
0

Я знаю, что есть похожие темы, но, к сожалению, их решение не работает так, как я хочу. У меня есть метка с определенным шрифтом, с ограничениями с левой стороны, равной 16, а с правой стороны равной 16. Так, вычислить ожидаемую высоту текста я использовал это:Как правильно рассчитать размер метки с автоматическим расположением

CGSize labelSize = [[strMod fineHtmlFromString:mdl.content] sizeWithFont:self.contentLabel.font 
                   constrainedToSize:CGSizeMake(SCREEN_WIDTH - 32, (FLT_MAX)) 
                    lineBreakMode:NSLineBreakByWordWrapping]; 

     self.heightFullSizeLabel = labelSize.height; 

32 представляет собой число, которое легко вычисляется как 16 + 16 (ограничений отступа). SCREEN_WIDTH определяется как #define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width

К сожалению, с этой логикой я получаю меньшую высоту, которую хочу, поэтому мне пришлось увеличить 32 числа до 40. Есть ли способ точно рассчитать высоту ярлыка с помощью макета?

+0

Почему вы хотите рассчитать его высоту? – Shai

+0

Рассчитать конечную высоту основного прокрутки. –

ответ

1

Правильный способ узнать размер текста контейнера является использование -sizeToFit или -sizeThatFits:(CGSize)size.
Тот, который вы используете, запрашивает только область, занимаемую текстом, но не учитывает прописку или другие материалы, связанные с видом, которые могут быть применены.
Вы можете увидеть огромную разницу в расчетах, если вы используете UItexView, который содержит много дополнений с каждой стороны.

+0

спасибо, было бы неплохо, если вы исправите мой фрагмент кода, вы бы так добры? –

+0

Не так сложно, просто добавьте текст на свой ярлык, отправьте sizeToFit или sizeThatFits, после этого прочитайте границы метки и установите self.heightFullSizeLabel. – Andrea

+0

Вы имеете в виду, что я должен добавить только [label sizeToFit]; после моего объявления об этом? –

1

Попробуйте использовать этот шрифт.

CGRect textRect = [text boundingRectWithSize:size 
            options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSFontAttributeName:FONT} 
            context:nil]; 

    CGSize size = textRect.size; 
    self.heightFullSizeLabel = size.height; 
Смежные вопросы