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,如何绘制文本的动态长度?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何强制两个标签长度相同?

iOS:如何在 pdf 生成中绘制文本时设置字体?

如何在视频上绘制文本以在 iOS 上显示字幕?

如何使用自动布局在 iOS 中根据文本长度更改 UILabel 宽度

iOS根据文本长度动态计算label的大小

如何在 QQuickItem 中绘制文本