我有3个水平放置子弹点的标签。我想给出定制设计的要点,所以我认为我应该将它们用作UIImage。让我来说明一下:
o PHP o Swift o Java
每个标签与其指定的子弹点之间将有固定的距离。标签与下一个标签的子弹点也有固定的距离(例如PHP - Swift的子弹点)。
最后,我想将它水平居中于视图。
如果我有标签的静态文本,则上述方案可行。但是,我想使用动态文本。
我认为解决方案是创建3个容器视图。所以我会:
View
ContainerView1 ContainerView2 ContainerView3
|------------| |--------------| |--------------|
| o PHP | | o Swift | | o C |
|------------| |--------------| |--------------|
但它不会因动态/更改文字大小而保持一致。我将使用sizeToFit使文本适合,但容器视图创建了新的单独的ViewController,所以我不确定我是否可以创建容器视图'宽度自动调整为'子弹点+动态标签的宽度' 。
Parent ContainerView (or UIView?)
|-----------------------------|
| CV1 CV2 CV3 |
| |-----| |-------| |---| |
| |o PHP| |o Swift| |o C| |
| |-----| |-------| |---| |
|-----------------------------|
此方案仅在我可以自动操作容器视图的宽度时才有效。关于子弹点+标签的宽度。因此,我可以为每个容器制作固定边距并将它们水平居中(可能使用父容器)。
实现这一目标的方法是什么?有没有办法在Storyboard上或以编程方式执行此操作?
答案 0 :(得分:1)
如果您的所有CV
视图的宽度都超过了autolayout可以确定的宽度,那么父容器视图将自动调整宽度以适应内部的内容(您说您将使用sizetofit)。然后,它们必须在第一个和第一个之间具有固定的垂直空间,并且最后也必须具有到父容器的边距(前导和尾随)。父容器不能具有约束宽度(例如固定宽度约束),因为它必须根据内部内容调整大小,如果这样做会导致约束冲突,它将无法工作。
如果您不对父视图容器使用autolayout,或者您有宽度约束,则可以使用
let size = parentViewContainer. systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
并将其设置为框架或宽度约束。
Here是一个示范项目。