IOS 7方法用于创建具有两个元素的容器?

时间:2014-05-23 15:59:17

标签: cocoa-touch ios7

所以,我是xcode和iOS7的新手,我试图创建内部有两个元素的简单容器。

  1. 我更喜欢100%以编程方式。 (没有IB)
  2. 我想用两个元素Image和Label创建容器。
  3. 我想实现可变宽度取决于里面的文本元素。 这是一个例子:
  4. enter image description here

    根据用户操作,我想动态更改文字。让我们假设更长的文本,主容器也必须改变宽度。

    现在问题是:最好的方法是什么?

    UIView与子视图或其他我只是期待方向。

    感谢代码示例。

    提前谢谢。

1 个答案:

答案 0 :(得分:1)

您所描述的正是UIButton自动执行的操作:它是一个包含图像和标题(文本)的容器,并在文本更改时自动调整大小。

但是,让我们假设你想自己做这件事。也就是说,让我们说你想要一个包含两个其他UIViews(子视图)的UIView("容器")。然后我们需要讨论这个要求:

  

根据用户操作,我想动态更改文字。让我们假设更长的文本,主容器也必须改变宽度。

这不会自动发生。您可以使用约束(自动布局)来描述与超级视图相关的子视图的大小/位置,但它以另一种方式工作:超级视图更改,子视图服从。因此,您必须在更改文本后手动更改超级视图大小

您仍然可以使用自动布局来帮助您。让我们说文本在UILabel中。好吧,UILabel希望在文本更改时自动更改宽度。到现在为止还挺好。但您仍必须自己更改容器视图宽度。你可以调用systemLayoutSizeFittingSize:来了解容器应该的大小,使用约束,从内到外工作;但是你必须自己改变它的大小。

(您可以在代码中轻松创建视图,子视图和自动布局约束。)

如果您想要使用自动布局,那么您只需在文本更改时计算所有内容的大小和位置,并自行调整(在代码中)。您可以通过调用sizeThatFits:(或sizeToFit实际调整大小正确)来了解标签所需的尺寸,以适应其文字。