簡體   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