更新进度时 UIProgressView 角半径发生变化
UIProgressView corner radius changing when updating progress
我已经使用 layer.cornerRadius (0.2) 和 clipsToBounds (true) 设置了进度视图的角半径。但是,当我使用警报更新进度时,角半径会发生变化。如果我关闭并重新打开应用程序,拐角半径将再次正确。
有人知道这里发生了什么吗?任何想法都会很有帮助,谢谢!
UIProgressView
有它自己的标准高度,并不能真正改变。当您设置自定义约束时,您可能会破坏进度视图的原始约束。每次 UIProgressView
使用 layoutSubviews()
重新加载其布局并将其设置为当前高度的 50% 时,您的自定义角半径可能会被覆盖。
我看到了这个问题的两个解决方案。
1。自定义进度视图(首选)
这将是一个首选,只需创建自定义进度视图,不用担心打破任何约束和改变角落!
2。继续反击
UIProgressView 可能会随着 layoutSubviews()
被调用而改变它的角,所以您可以做的是尝试通过重写 view/cell.[=19 中的方法将其设置回您想要的值=]
override func layoutSubviews() {
super.layoutSubviews()
greenBar.layer.cornerRadius = 0.2
redBar.layer.cornerRadius = 0.2
}
如果这还不够,请尝试不同的地方,例如 layoutIfNeeded()
或 prepareForReuse()
等
作为使用高度约束的替代方法,您可以可以 进行转换,但是进度条的侧面看起来有点滑稽。
// x: 1 - keeps the dimention the same size
// y: 10 - makes the height 10x bigger
greenBar.transform = CGAffineTransform(scaleX: 1, y: 10)
第二种解决方案并不是一个很好的建议,因为您会发现自己一直在与最初的实现作斗争。 UIProgressView
并非旨在按照您的使用方式使用,因此我 强烈建议尝试解决方案 1 并实施您自己的视图,您可以在其中设置规则 :) 祝您好运!
我已经使用 layer.cornerRadius (0.2) 和 clipsToBounds (true) 设置了进度视图的角半径。但是,当我使用警报更新进度时,角半径会发生变化。如果我关闭并重新打开应用程序,拐角半径将再次正确。
有人知道这里发生了什么吗?任何想法都会很有帮助,谢谢!
UIProgressView
有它自己的标准高度,并不能真正改变。当您设置自定义约束时,您可能会破坏进度视图的原始约束。每次 UIProgressView
使用 layoutSubviews()
重新加载其布局并将其设置为当前高度的 50% 时,您的自定义角半径可能会被覆盖。
我看到了这个问题的两个解决方案。
1。自定义进度视图(首选)
这将是一个首选,只需创建自定义进度视图,不用担心打破任何约束和改变角落!
2。继续反击
UIProgressView 可能会随着 layoutSubviews()
被调用而改变它的角,所以您可以做的是尝试通过重写 view/cell.[=19 中的方法将其设置回您想要的值=]
override func layoutSubviews() {
super.layoutSubviews()
greenBar.layer.cornerRadius = 0.2
redBar.layer.cornerRadius = 0.2
}
如果这还不够,请尝试不同的地方,例如 layoutIfNeeded()
或 prepareForReuse()
等
作为使用高度约束的替代方法,您可以可以 进行转换,但是进度条的侧面看起来有点滑稽。
// x: 1 - keeps the dimention the same size
// y: 10 - makes the height 10x bigger
greenBar.transform = CGAffineTransform(scaleX: 1, y: 10)
第二种解决方案并不是一个很好的建议,因为您会发现自己一直在与最初的实现作斗争。 UIProgressView
并非旨在按照您的使用方式使用,因此我 强烈建议尝试解决方案 1 并实施您自己的视图,您可以在其中设置规则 :) 祝您好运!