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中进度条和标签的约束的主要内容,如果未能解决你的问题,请参考以下文章