如何正确创建一个在Xcode 4中调整文本长度的UIButton?

时间:2011-09-05 09:23:14

标签: ios xcode4 resize uibutton

在Xcode 4中,您应该能够设计根据内容调整大小的UI界面。仍然看起来有关如何获得这个的一些缺失部分。

我有一个在XIB文件中配置的按钮,可以向右调整大小,并且它有足够的空间来执行此操作。

问题是当标签更新时,它不会接缝以调整按钮的大小。

可以通过在标签更改后添加[button sizeToFit];来解决此问题。

我仍然在寻找一种无需在代码中添加此手动步骤即可运行的解决方案。

button-ios-43

button-ios-50b7

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

我错过了什么?

3 个答案:

答案 0 :(得分:22)

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

  1. 点击UIButton
  2. 在尺寸检查器中
  3. content hugging拖动到1(水平和垂直)
  4. compression resistance拖至999(两者都是)
  5. 在UIButton的constraints下点击Width并将priority更改为250
  6. 为Height做同样的事情
  7. 您可以使用UIButton的{​​{1}}来控制左/右/上/下的填充

答案 1 :(得分:2)

在设置标题后,您需要在按钮上调用sizeToFit,以使其调整大小以适合给定的标题。

您可以通过继承UIButton来删除手动步骤,重写setTitle:forControlState:方法并在其中实施对sizeToFit的调用。不要忘记调用超级实现,否则你的标题将不会被设置,并且会发生不好的事情。

答案 2 :(得分:-4)

在XCode 4.5及更高版本中,现在可以使用“自动布局/约束”来完成此操作。

主要优点是:

  1. 您根本不需要以编程方式设置帧!
  2. 如果操作正确,您无需为了更改方向而重置帧。
  3. 此外,设备更改无需打扰您(阅读,无需针对不同的屏幕尺寸单独编码)。
  4. 一些缺点:

    1. 不向后兼容 - 仅适用于iOS 6及更高版本。
    2. 需要熟悉(但以后会节省时间)。
    3. 最酷的是我们专注于声明一个意图,例如:

      • 我希望这两个按钮具有相同的宽度;或
      • 我需要这个视图垂直居中,并从superview的边缘延伸到10 pts的最大值;甚至,
      • 我希望此按钮/标签根据显示的标签调整大小!

      这是一个介绍自动布局的简单教程: 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

      一开始需要一些时间,但看起来确实值得努力。

      干杯!