繁体   English   中英

更新进度时 UIProgressView 角半径发生变化

[英]UIProgressView corner radius changing when updating progress

我使用 layer.cornerRadius (0.2) 和 clipsToBounds (true) 设置了进度视图的角半径。 但是,当我使用警报更新进度时,拐角半径会发生变化。 如果我关闭并重新打开应用程序,圆角半径再次正确。

有谁知道这里发生了什么? 任何想法都会非常有帮助,谢谢!

在此处输入图像描述

UIProgressView有它自己的标准高度,并不是真的要改变。 当您设置自定义约束时,您可能会破坏进度视图的原始约束。 每次UIProgressView使用layoutSubviews()重新加载其布局并将其设置为当前高度的 50% 时,您的自定义角半径可能会被覆盖。

我看到这个问题有两种解决方案。

1.自定义进度视图(首选)

这将是一个首选,只需创建自定义进度视图,不用担心打破任何约束和改变角落!

2. 继续反击

UIProgressView 可能会在调用layoutSubviews()时改变其角落,因此您可以做的是尝试通过覆盖视图/单元格中的方法将其设置回您想要的值。

override func layoutSubviews() {
    super.layoutSubviews()
    greenBar.layer.cornerRadius = 0.2
    redBar.layer.cornerRadius = 0.2
}

如果这还不够,请尝试不同的地方,例如prepareForReuse()layoutIfNeeded() ) 等。

作为使用高度约束的替代方法,您可以进行变换,但是进度条在侧面看起来有点有趣。

// x: 1 - keeps the dimention the same size 
// y: 10 - makes the height 10x bigger
greenBar.transform = CGAffineTransform(scaleX: 1, y: 10)

第二种解决方案并不是一个好的建议,因为您会发现自己一直在与原始实现作斗争。 UIProgressView不是按照您的使用方式设计的,所以我强烈建议您尝试解决方案 1并实现您自己的视图,您可以在其中设置规则:) 祝你好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM