0

我需要根据某些条件水平显示一个进度条和一个标签,并且基于不同的条件,我需要在另一个垂直下方显示一个标签和进度条。第三个条件是我隐藏标签并只显示进度条。对于第三个条件,我希望进度条占据屏幕的整个宽度——在它的两端都有一些空间。最初,我首先设置约束以并排显示它们并且它起作用了。但是,对于其他两个条件,当我尝试在运行时修改现有约束时,它会搞砸并且无法按预期工作。关于这些场景的约束应该如何显示的任何指针。附件是并排的进度条和标签的图像在此处输入图像描述

4

2 回答 2

0

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

以此目的

进度条约束

在此处输入图像描述

标签约束

在此处输入图像描述

我需要在另一个垂直下方显示标签和进度条

以此目的

进度条约束

在此处输入图像描述

标签约束

在此处输入图像描述

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

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

    NSLayoutConstraint.isActive = false; // or true. Here NSLayoutConstraint is your reference to constraint outlet.
于 2019-04-11T06:13:14.507 回答
0

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

将顶部、底部、前导、尾随约束添加到堆栈视图。不要向堆栈视图添加高度约束。向标签添加高度约束。

将stackview配置更改为

在此处输入图像描述

并通过更改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
}

在此处输入图像描述

于 2019-04-11T06:14:12.810 回答