IOS Swift中进度条和标签的约束

问题描述 投票:0回答:2

我需要根据某些条件水平显示一个进度条和一个相邻的标签,并根据不同的条件,我需要在另一个下方垂直显示标签和进度条。第三个条件是我隐藏标签并仅显示进度条。对于第三个条件,我希望进度条占据屏幕的整个宽度 - 它的两端都有一些空间。最初,我开始通过设置约束来并排显示它们并且它起作用。但是,对于其他两个条件,当我尝试在运行时修改现有约束时,它会搞乱并且不能按预期工作。关于这些场景的约束应该如何的任何指针。附件是一个进度条和标签的图像sideenter image description here

ios swift uislider uiprogressview uiprogressbar
2个回答
0
投票

添加水平UIStackview并添加UIProgressView和UILabel。将标签文本对齐设置为居中。

向stackview添加top,bottom,leading,trailing约束。不要将高度约束添加到stackview。向标签添加高度约束。

将stackview配置更改为

enter image description here

并通过更改stackview的轴并隐藏/显示标签来更改样式,如下所示

@IBAction func style1(_ sender: Any) {
    stackView.axis = .horizontal
    stackView.alignment = .center
    label.isHidden = false
}
@IBAction func style2(_ sender: Any) {
    stackView.axis = .vertical
    stackView.alignment = .fill
    label.isHidden = false
}
@IBAction func style3(_ sender: Any) {
    stackView.axis = .horizontal
    stackView.alignment = .center
    label.isHidden = true
}

enter image description here


0
投票

我需要根据某些条件并根据不同的条件,水平显示进度条和标签

以此目的

进度条约束

enter image description here

标签约束

enter image description here

我需要垂直显示标签和进度条

以此目的

进度条约束

enter image description here

标签约束

enter image description here

第三个条件是我隐藏标签并仅显示进度条。对于第三个条件,我希望进度条占据屏幕的整个宽度 - 它的两端有一些空间

这个有点棘手,但并不困难,根据我们的第一个问题设置约束,并添加一个额外的约束与其他约束,尾随空间到superview,Stroyboard将显示错误,不要担心。现在在Swift / objc文件中为Progressbar尾随空间创建一个出口,并在运行时激活一个约束并根据您的逻辑停用其他约束。随着显示/隐藏您的标签。像这样

    NSLayoutConstraint.isActive = false; // or true. Here NSLayoutConstraint is your reference to constraint outlet.
© www.soinside.com 2019 - 2024. All rights reserved.