【问题标题】:Is there a way to make a UIButton wrap with the text in a UILabel?有没有办法让 UIButton 用 UILabel 中的文本包装?
【发布时间】:2013-03-09 17:28:13
【问题描述】:

基本上我希望 UIButton 出现在 UILabel 的末尾。 UILabel 是本地化的,因此定位可能会有所不同。有没有办法让我的布局恰到好处?

【问题讨论】:

  • 立即查看我的答案

标签: ios objective-c layout uibutton uilabel


【解决方案1】:

根据标签的宽度设置按钮的X值,这会将按钮设置在标签的右侧。现在它测试了。

button.frame = CGRectMake(self.mylabel.frame.origin.x+self.mylabel.frame.size.width, self.mylabel.frame.origin.y, 50.00, 20.00);

【讨论】:

  • 这会将按钮设置在标签框架之外
  • 这假定标签原点从 0,0 开始,这不是我想要的。
  • @AnthonyGlyadchenko 你在你的问题中说过Basically I want the UIButton to appear at the end of a UILabel 并且使用这个代码你可以看到标签的按钮显示结束所以什么不起作用?
  • 并且它不假设任何关于标签的代码此代码仅采用标签 X,Y 值来设置按钮 X,Y 值无论标签的原始值是什么此代码将在标签末尾显示按钮.
【解决方案2】:
button.frame = CGRectMake(label.frame.origin.x + label.frame.size.width - buttonWidth, label.frame.origin.y, buttonHeight, buttonWidth);

buttonWidthbuttonHeight 只是我用来描述你应该放在那里的任意变量

【讨论】:

  • 如果你想正确的话,应该是label.frame.origin.x + label.frame.size.width
【解决方案3】:

我假设您想在同一个视图上添加标签和按钮。你的意思是你的文本是本地化的,直到运行时才知道文本的大小。实际上,这是您要求的其他内容。因为你需要设置标签的大小取决于文本的大小。您可以使用以下方法计算文本的大小

- (CGSize)sizeWithFont:(UIFont *)font

或者您可以在设置文本后调整标签大小

- (void)sizeToFit

完成标签大小后

你可以像这样设置按钮的框架

button.frame = CGRectMake(label.frame.origin.x + label.frame.size.with, yPosition, buttonWidth, buttonHeight);

请注意,设置好标签的边框后,还需要设置按钮的边框。如果您更改框架标签,则需要更改按钮的框架。或者 ios 6.0 之前的版本,您可以使用 NSLayoutConstraint 获取更多信息 https://developer.apple.com/library/ios/#documentation/AppKit/Reference/NSLayoutConstraint_Class/NSLayoutConstraint/NSLayoutConstraint.html

【讨论】:

  • 一个解释会很好,为什么我的答案被否决了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 2021-09-12
相关资源
最近更新 更多