iOS,如何绘制动态长度的文字?

时间:2012-01-05 15:53:42

标签: ios uiview uiimage uilabel

图片是:http://www.flickr.com/photos/71607441@N07/6641626163/

背景是UIImageView,蓝色部分我想显示为图像的“标题”。 我使用了UILabel,但文本的长度是动态的。它可以是一行或两行,最多两行。如果文本长于两行,则会被截断。

蓝色部分看起来像“在Microsoft Word中突出显示”,但它不是“iOS UILabel.text中的突出显示”

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法找到标题所需的大小(

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

还有:

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

然后,您可以使用这些尺寸(size.width,size.height)来设置UILabel的框架。

希望这会有所帮助。 :)

答案 1 :(得分:1)

试试这段代码:----

        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;