动态大小的 UILabel 直接跟在 UIButton 后面

Posted

技术标签:

【中文标题】动态大小的 UILabel 直接跟在 UIButton 后面【英文标题】:Dynamically Sized UILabel Followed Directly by UIButton 【发布时间】:2014-03-25 19:23:56 【问题描述】:

如何将 UIButton 放置在动态 UILabel 的末尾?

这是我想要实现的截图:

【问题讨论】:

标签的所有文字都在 1 行吗? 【参考方案1】:

您在使用自动布局吗?如果是这样,请在标签和按钮之间添加水平间距约束和基线对齐约束。还要确保标签的行数为 0。

【讨论】:

如果有时标签是按钮直接跟随的半行(在同一行上),但有时该行是 1.5 行要直接跟随同一个按钮,这将如何工作。 水平间距意味着无论标签的宽度如何,它都会以您定义的常数“粘”在按钮上。 问题是如果我将标签的行数设置为 0,它会根据情节提要中标签的大小创建尽可能多的行。如果文本每次都只有一行,那很好,但事实并非如此。我怎样才能使标签尽可能长,尽可能多的行以适应文本,但在它结束的地方紧跟按钮。不管它是在第一行还是第五行结束? 我不明白问题,请附上所需结果的屏幕截图。 我添加了一张图片,展示了我想要实现的目标。【参考方案2】:

试试

[your_label sizeToFit];
CGRect rect = your_button.frame;
rect.origin.x = CGRectGetMaxX(your_label.frame);
your_button.frame = rect;

【讨论】:

当我使用这个按钮消失。 这段代码前后标签和按钮有哪些框架?【参考方案3】:

我会覆盖-[UIView layoutSubviews] 并在那里做你想做的事。一旦你这样做了,代码将看起来像 Avt 的答案。如果您希望标签有多行,但宽度受限,您可能想尝试类似

CGSize labelSize = [yourLabel sizeThatFits:CGSizeMake(someWidth, 9999)];

并使用它来设置标签的框架。

【讨论】:

【参考方案4】:

如果您希望按钮出现在 UILabel 的底部,请使用约束。

【讨论】:

以上是关于动态大小的 UILabel 直接跟在 UIButton 后面的主要内容,如果未能解决你的问题,请参考以下文章

动态改变UILabel的字体大小

创建单一大小的动态 UILabel 字体

UILabel 动态内容自动调整大小问题

当 UILabel 动态调整大小时,在 UIView 中移动 UIButton。 iOS

UILabel 动态获取字体大小 - swift 3

基于UILabel的动态UICollectionView标头大小