iOS:UILabel 之后的 UIImageView 与多行

Posted

技术标签:

【中文标题】iOS:UILabel 之后的 UIImageView 与多行【英文标题】:iOS: UIImageView after UILabel with multiline 【发布时间】:2015-04-14 06:27:17 【问题描述】:

我有一个多行 UILabel,有时有 1 行或最多 3 行文本。在 UILabel 下是一个 UIImageView。 UIImageView 应该始终在 UILabel 和 UIImageView 之间具有完全相同的填充,无论 UILabel 中有 1 行还是 3 行。

我没有在我的视图中使用自动布局,因为我无法让它工作,UILabel 被拉伸到整个 UIView 的宽度。

谁能解释一下,如何使用相同的填充正确地将 UIImageView 定位在 UILabel 下?谢谢!

【问题讨论】:

我没有在我的视图中使用自动布局,因为我无法让它工作 ...学习使用自动布局! 还有另一种方法......第一次在标签中添加文本,然后在标签中添加带有图像的属性文本,它将始终为您提供相同的填充 【参考方案1】:

您可以使用 UILabel 的顶部位置存储参考,以便始终使用相同的填充将 UIImageView 定位在标签下。在此之前,您需要在已创建的新标签中调用 sizeToFit 方法。

NSString *text = @"Some text here...";

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[myLabel setNumberOfLines:0];
[myLabel setText:text];
[myLabel sizeToFit];

CGFloat posY = myLabel.frame.origin.y + myLabel.frame.size.height;

UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, posY, 300, 300)];

【讨论】:

【参考方案2】:

    了解AutoLayout。这是实现您的目标和定位您的观点的最佳方式。

    任何其他方式是使用来自NSString 的boundingRectWithSize。使用此方法,您可以计算 UILabel 中文本的大小并在运行时更改 UIImage 的框架。

【讨论】:

以上是关于iOS:UILabel 之后的 UIImageView 与多行的主要内容,如果未能解决你的问题,请参考以下文章

在ios中截断后如何在UILabel文本的末尾添加“更多”

IOS 使用SDWebImage实现仿新浪微博照片浏览器

IOS开发调整UILabel的行间距

ios6--UILabel

iOS开发 UILabel实现自适应高宽

iOS:多行 UILabel 与水平 UIStackView 中的另一个 UILabel 大小错误