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

Posted

技术标签:

【中文标题】IOS Swift中进度条和标签的约束【英文标题】:Constraints for progress bar and label together in IOS Swift 【发布时间】:2019-04-11 05:39:37 【问题描述】:

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

【问题讨论】:

【参考方案1】:

添加一个水平的 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

【讨论】:

对于垂直场景,我希望标签出现在进度条的顶部。 UIstackview 是否可以通过移动他们的位置来实现。 @Rash 你可以使用 stackView.arrangedSubviews = stackView.arrangedSubviews.reversed()【参考方案2】:

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

为此目的

进度条约束

标签约束

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

为此目的

进度条约束

标签约束

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

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

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

【讨论】:

以上是关于IOS Swift中进度条和标签的约束的主要内容,如果未能解决你的问题,请参考以下文章

android进度条滑动条和评分控件

进度条和文件复制问题?

进度条和 webview 问题

Layui(三):导航菜单、选项卡、进度条和面板

python实现进度条和百分比同时显示

前端上传文件实时显示进度条和上传速度的工作原理是怎样的?