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 与多行的主要内容,如果未能解决你的问题,请参考以下文章