如何正确地创build一个调整到Xcode 4中的文本长度的UIButton?

在Xcode 4中,您应该能够devise基于其内容来resize的UI界面。 不过,看起来这是一些关于如何获得这个缺失的片断。

我有一个在XIB文件中configuration的button来调整右侧的大小,并且有足够的空间来做到这一点。

问题是当标签更新时,它没有缝合来调整button的大小。

这可以通过添加一个[button sizeToFit]; 标签更改后。

仍然我正在寻找一个解决scheme,而不需要在代码中添加这个手动步骤。

按钮-IOS-43

按钮IOS-50B7

我提到有足够的空间来进一步扩展button,仍然sizeToFit接缝来放大button,但仍然不足以适应整个文本。

我错过了什么?

在XCode 4.5及以上版本中,现在可以通过使用“ 自动布局/约束 ”来完成。

主要优点是:

  1. 你不需要编程设置框架!
  2. 如果操作正确,则不需要为重置方向更改而重新设置框架。
  3. 此外,设备更改不需要打扰您(阅读,不需要为不同的屏幕尺寸单独编码)。

一些缺点:

  1. 不向后兼容 – 仅适用于iOS 6及以上版本。
  2. 需要熟悉(但会在以后节省时间)。

最酷的事情是我们集中于声明一个意图,如:

  • 我想要这两个button是相同的宽度; 要么
  • 我需要把这个观点垂直居中,并从监督的边缘延伸到10分的最大范围。 甚至,
  • 我想要这个button/标签根据它显示的标签来resize!

这是一个简单的教程来介绍自动布局: http ://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2

有关更详细的信息,请访问: http : //www.techotopia.com/index.php/An_Introduction_to_Auto_Layout_in_iOS_6

起初需要一些时间,但是看起来确实是值得的。

干杯!

[button sizeToFit]对我不起作用,但是我发现了一种单独使用IB的方法(xcode 4.5):

  1. 点击UIButton
  2. 在“大小”检查器中,将content hugging拖到1(水平和垂直)
  3. compression resistance拖到999(对于两者)
  4. 在UIButton的constraints点击Width ,将priority改为250
  5. 为高度做同样的事情
  6. 你可以使用UIButtoninset来控制左/右/上/下的填充

你需要在设置标题后调用sizeToFit来resize以适应给定的标题。

您可以通过sizeToFit UIButton来移除手动步骤,覆盖setTitle:forControlState:方法并在那里实现对sizeToFit的调用。 不要忘记调用超级实现,否则你的标题不会被设置,坏事会发生。