所以,我是xcode和iOS7的新手,我试图创建内部有两个元素的简单容器。
根据用户操作,我想动态更改文字。让我们假设更长的文本,主容器也必须改变宽度。
现在问题是:最好的方法是什么?
UIView与子视图或其他我只是期待方向。
感谢代码示例。
提前谢谢。
答案 0 :(得分:1)
您所描述的正是UIButton自动执行的操作:它是一个包含图像和标题(文本)的容器,并在文本更改时自动调整大小。
但是,让我们假设你想自己做这件事。也就是说,让我们说你想要一个包含两个其他UIViews(子视图)的UIView("容器")。然后我们需要讨论这个要求:
根据用户操作,我想动态更改文字。让我们假设更长的文本,主容器也必须改变宽度。
这不会自动发生。您可以使用约束(自动布局)来描述与超级视图相关的子视图的大小/位置,但它以另一种方式工作:超级视图更改,子视图服从。因此,您必须在更改文本后手动更改超级视图大小 。
您仍然可以使用自动布局来帮助您。让我们说文本在UILabel中。好吧,UILabel希望在文本更改时自动更改宽度。到现在为止还挺好。但您仍必须自己更改容器视图宽度。你可以调用systemLayoutSizeFittingSize:
来了解容器应该的大小,使用约束,从内到外工作;但是你必须自己改变它的大小。
(您可以在代码中轻松创建视图,子视图和自动布局约束。)
如果您不想要使用自动布局,那么您只需在文本更改时计算所有内容的大小和位置,并自行调整(在代码中)。您可以通过调用sizeThatFits:
(或sizeToFit
实际调整大小正确)来了解标签所需的尺寸,以适应其文字。