根据动态 UILabel 自动调整 ContainerView 的宽度
AutoResize ContainerView's Width According To Dynamic UILabel
我有 3 个水平放置的带有项目符号点的标签。我想提供要点自定义设计,所以我认为我应该将它们用作 UIImage。让我来说明一下:
o PHP o Swift o Java
每个标签与其分配的项目符号点之间将有固定的距离。标签也将与下一个标签的项目符号点保持固定距离(例如 PHP - Swift 的项目符号点)。
最后,我想将它水平居中到视图。
如果我有标签的静态文本,上述方案就可以工作。但是,我想使用动态文本。
我认为的解决方案是创建 3 个容器视图。所以我会:
View
ContainerView1 ContainerView2 ContainerView3
|------------| |--------------| |--------------|
| o PHP | | o Swift | | o C |
|------------| |--------------| |--------------|
但是 dynamic/changing 文本大小看起来不一致。我将使用 sizeToFit 使文本适合,但容器视图创建了新的单独 ViewController,所以我不确定我是否可以使容器视图的宽度自动调整为 'Bullet Point + 动态标签的宽度'。
Parent ContainerView (or UIView?)
|-----------------------------|
| CV1 CV2 CV3 |
| |-----| |-------| |---| |
| |o PHP| |o Swift| |o C| |
| |-----| |-------| |---| |
|-----------------------------|
这种情况只有在我可以自动操纵 'container view' 的宽度时才有效,关于 项目符号点 + 标签的宽度 。因此,我可以为每个容器制作固定边距并将它们水平居中(可能通过使用父容器)。
实现它的方法是什么?有没有办法在 Storyboard 上或以编程方式实现?
如果所有 CV
视图的宽度都不能由自动布局确定(您说您将为此使用 sizetofit),则父容器视图将自动调整宽度以适应内部内容。然后它们必须在第一个和最后一个之间有固定的垂直间距,也必须有到父容器的边距(前导和尾随)。父容器不能有约束宽度(例如固定宽度约束),因为它必须根据内部内容调整大小,如果这样做会导致约束冲突,并且它将无法工作。
如果您不为父视图容器使用自动布局,或者您有宽度限制,您可以使用
获取容器的大小
let size = parentViewContainer. systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
并将其设置为框架或宽度约束。
Here 是一个演示这一点的示例项目。
我有 3 个水平放置的带有项目符号点的标签。我想提供要点自定义设计,所以我认为我应该将它们用作 UIImage。让我来说明一下:
o PHP o Swift o Java
每个标签与其分配的项目符号点之间将有固定的距离。标签也将与下一个标签的项目符号点保持固定距离(例如 PHP - Swift 的项目符号点)。
最后,我想将它水平居中到视图。
如果我有标签的静态文本,上述方案就可以工作。但是,我想使用动态文本。
我认为的解决方案是创建 3 个容器视图。所以我会:
View
ContainerView1 ContainerView2 ContainerView3
|------------| |--------------| |--------------|
| o PHP | | o Swift | | o C |
|------------| |--------------| |--------------|
但是 dynamic/changing 文本大小看起来不一致。我将使用 sizeToFit 使文本适合,但容器视图创建了新的单独 ViewController,所以我不确定我是否可以使容器视图的宽度自动调整为 'Bullet Point + 动态标签的宽度'。
Parent ContainerView (or UIView?)
|-----------------------------|
| CV1 CV2 CV3 |
| |-----| |-------| |---| |
| |o PHP| |o Swift| |o C| |
| |-----| |-------| |---| |
|-----------------------------|
这种情况只有在我可以自动操纵 'container view' 的宽度时才有效,关于 项目符号点 + 标签的宽度 。因此,我可以为每个容器制作固定边距并将它们水平居中(可能通过使用父容器)。
实现它的方法是什么?有没有办法在 Storyboard 上或以编程方式实现?
如果所有 CV
视图的宽度都不能由自动布局确定(您说您将为此使用 sizetofit),则父容器视图将自动调整宽度以适应内部内容。然后它们必须在第一个和最后一个之间有固定的垂直间距,也必须有到父容器的边距(前导和尾随)。父容器不能有约束宽度(例如固定宽度约束),因为它必须根据内部内容调整大小,如果这样做会导致约束冲突,并且它将无法工作。
如果您不为父视图容器使用自动布局,或者您有宽度限制,您可以使用
let size = parentViewContainer. systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
并将其设置为框架或宽度约束。
Here 是一个演示这一点的示例项目。