如何将 UIButton 与右侧的 UILabel 对齐。喜欢 instagram 的评论

Posted

技术标签:

【中文标题】如何将 UIButton 与右侧的 UILabel 对齐。喜欢 instagram 的评论【英文标题】:How to align UIButton to the left with UILabel on the right. Like instagram's comments 【发布时间】:2016-05-19 14:23:11 【问题描述】:

我试图将用户名放在右侧,然后在按钮左侧放置一个带有一些文本的 UIlabel。

以下是我所追求的示例:

我只是不确定如何获得约束来做到这一点,尤其是 UILabel 文本在按钮下方的下一行继续的部分......?!

如果有人有任何想法,任何帮助表示赞赏!

问候。

【问题讨论】:

我相信它是一个自定义控件,包含文本区域和一个按钮。请参阅***.com/questions/23107948/…。实际上,我可以通过使用这个想法开始一些基本的事情。这可能会有所帮助。 @smozgur 谢谢你,我会看看......但如果你有任何类型的例子会很好和有帮助! :) 自从我看到你的问题以来,我实际上正在玩它。到目前为止,我有一个基本的工作示例,但试图对其进行改进以了解如何实现这一目标。也许其他程序员知道得更清楚,让我们看看我们能不能搞定。 @smozgur 好的,太好了!我现在正在尝试,我会告诉你的 到目前为止我得到了这个:batcoder.com/img/button-inside-textview.png 【参考方案1】:

请查看我在 UITextView 想法中的 UIButton 上创建的示例: https://github.com/smozgur/UIButton-inside-UITextView 我还在玩它,但到目前为止效果还不错。

【讨论】:

【参考方案2】:

我认为最好的方法是使用一个标签来完成所有工作。您可以使用属性字符串(下面的代码)设置文本样式。然后创建一个放置在标签顶部的 UIButton(UIButton 的大小可以根据用户名的长度进行调整)。

这是我在注册屏幕上创建免责声明标签时使用的方法,如下所示

这是创建属性字符串的代码:

let disclaimerAttributedString = NSMutableAttributedString(string: disclaimerLabel.text!, attributes: [NSKernAttributeName: -0.4])
disclaimerAttributedString.addAttributes([NSForegroundColorAttributeName: UIColor.whiteColor(), NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue], range: NSMakeRange(38, 12))
disclaimerAttributedString.addAttributes([NSForegroundColorAttributeName: UIColor.whiteColor(), NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue], range: NSMakeRange(55, 14))
disclaimerLabel.attributedText = disclaimerAttributedString

我的情况略有不同,因为我将其应用于静态文本。对于您来说,您可以根据用户名的长度在代码中创建按钮,或者您可以通过将按钮固定在 UILabel 的左上角来近似它。

您可以通过使用this SO answer中的字符串扩展名来计算用户名将占用的属性字符串的长度

【讨论】:

我是这么想的,但是如何获取用户名的长度?

以上是关于如何将 UIButton 与右侧的 UILabel 对齐。喜欢 instagram 的评论的主要内容,如果未能解决你的问题,请参考以下文章

自动布局:包含 UILabel + UIButton 的标题视图

如何将 UIButton 文本与 UILabel 文本垂直对齐?

使用 UILabel 和 UIButton 显示用户标签

将 UIButton 对齐到 UITableViewCell 的右侧

如何将 UILabel 和 UIButton 项都放入 UITableView 标题部分的 UIView

UIButton 约束失败,但适用于 UILabel