IOS Swift中一起限制进度条和标签

时间:2019-04-11 05:39:38

标签: ios swift uislider uiprogressview uiprogressbar

我需要根据某种条件和不同的条件水平显示一个进度条和一个标签,它们彼此相邻,而我需要垂直显示一个标签和进度条。第三个条件是我隐藏标签并仅显示进度栏。对于第三个条件,我希望进度条占据屏幕的整个宽度-屏幕两端的空间。最初,我首先放置约束以使其并排显示,并且它起作用了。但是,对于其他两个条件,当我尝试在运行时修改现有约束时,它变得混乱并且无法按预期工作。在这些情况下,有关约束外观的任何指示。附件是进度条和标签并排的图像enter image description here

2 个答案:

答案 0 :(得分:0)

  

我需要根据某些条件和不同条件将进度条和标签水平相邻放置

为此

进度条约束

enter image description here

标签约束

enter image description here

  

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

为此目的

进度条约束

enter image description here

标签约束

enter image description here

  

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

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

    NSLayoutConstraint.isActive = false; // or true. Here NSLayoutConstraint is your reference to constraint outlet.

答案 1 :(得分:0)

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

向堆栈视图添加顶部,底部,前导,尾随约束。不要在堆栈视图中添加高度限制。在标签上添加高度限制。

将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