iOS,如何绘制文本的动态长度?
Posted
技术标签:
【中文标题】iOS,如何绘制文本的动态长度?【英文标题】:iOS, how to draw the dynamic length of text? 【发布时间】:2012-01-05 15:53:42 【问题描述】:图片为:http://www.flickr.com/photos/71607441@N07/6641626163/
背景是 UIImageView,蓝色部分我想显示为图像的“标题”。 我使用了 UILabel,但文本的长度是动态的。可以是一行,也可以是两行,最多两行。如果文本超过两行,则会被截断。
蓝色部分看起来像“Microsoft Word 中的突出显示”,但不是“ios UILabel.text 中的突出显示”
有人可以帮助我吗?
【问题讨论】:
【参考方案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;
【讨论】:
谢谢。我试过你的代码。这不是我想要的。在最后一行,如果它很短,我想把标签剪到中间。所以可能有两个 UILabel 来解决它。但是不知道第一条线怎么画,第二条线怎么画,怎么计算。【参考方案2】:您可以使用以下方法找到标题所需的像素大小:
CGSize size = [UILabel.text sizeWithFont:yourFont];
还有:
CGSize size = [UILabel.text sizeWithFont:yourFont lineBreakMode: yourLineBreakMode];
然后您可以使用这些尺寸(size.width、size.height)来设置您的 UILabel 的框架。
希望这会有所帮助。 :)
【讨论】:
以上是关于iOS,如何绘制文本的动态长度?的主要内容,如果未能解决你的问题,请参考以下文章