iOS, как нарисовать динамическую длину текста? - PullRequest
0 голосов
/ 05 января 2012

Картинка: http://www.flickr.com/photos/71607441@N07/6641626163/

Фон представляет собой UIImageView, а синюю часть я хочу показать как «заголовок» изображения. Я использовал UILabel, но длина текста динамическая. Это может быть одна строка или две строки, максимум две строки. Если текст длиннее двух строк, он будет обрезан.

Синяя часть выглядит как «выделение в Microsoft Word», но это не «выделение в iOS UILabel.text»

Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 05 января 2012

Попробуйте этот код: ----

        CGSize maximumSize = CGSizeMake(320, 30);

UILabel *newsLabel = [[UILabel alloc] init];
                    newsLabel.textColor = [UIColor whiteColor];
                    newsLabel.font = [UIFont boldSystemFontOfSize:11];
                    newsLabel.backgroundColor = [UIColor clearColor];
                    newsLabel.lineBreakMode = UILineBreakModeWordWrap;
                    newsLabel.numberOfLines = 0;
                    lineBreakMode:newsLabel.lineBreakMode];
                    CGSize dateStringSize = [@"Text Input" sizeWithFont:newsLabel.font 
                                                                       constrainedToSize:maximumSize 
                                                                           lineBreakMode:newsLabel.lineBreakMode];
                    CGRect dateFrame = CGRectMake(5, 5, 320, dateStringSize.height); //breath can be any desired float value


                    newsLabel.text = @"Text Input";
                    newsLabel.textAlignment = UITextAlignmentCenter; 
                   newsLabel.frame = dateFrame;
1 голос
/ 05 января 2012

Вы можете найти размер в пикселях, необходимый для вашего заголовка, используя:

CGSize size = [UILabel.text sizeWithFont:yourFont];

, также есть:

CGSize size = [UILabel.text sizeWithFont:yourFont lineBreakMode: yourLineBreakMode];

Затем можно использовать эти размеры (size.width, size.высота), чтобы установить кадр вашей UILabel.

Надеюсь, это поможет.:)

...