首先,這個項目是使用Swift構建的。Swift Progress Indicator Image Mask
我想創建一個自定義的進度指示器,當腳本運行時「填滿」。該腳本將調用從遠程服務器提取的JSON訂閱源。
爲了更好地觀察我後,我做了這個:
我的猜測是有兩個PNG圖像;一個白色和一個紅色,然後根據進度數量簡單地做一些遮罩。
對此有何看法?
首先,這個項目是使用Swift構建的。Swift Progress Indicator Image Mask
我想創建一個自定義的進度指示器,當腳本運行時「填滿」。該腳本將調用從遠程服務器提取的JSON訂閱源。
爲了更好地觀察我後,我做了這個:
我的猜測是有兩個PNG圖像;一個白色和一個紅色,然後根據進度數量簡單地做一些遮罩。
對此有何看法?
掩蔽可能矯枉過正。每次只需重新繪製圖像。當你這樣做時,你繪製紅色的矩形來填充繪圖的下半部分,到你想要的任何高度;然後繪製液滴圖像(PNG),該圖像在中間具有透明度,因此紅色矩形顯示爲透過。所以,一個PNG就足夠了,因爲每次重繪時都可以將紅色矩形繪製爲「實時」。
我喜歡你的繪圖這麼多,我想把它給生活帶來的,所以這裏是我工作的代碼(我的PNG被稱爲tear.png和iv
是我的接口一個UIImageView; percent
應該介於0 CGFloat的1):
func redraw(percent:CGFloat) {
let tear : UIImage! = UIImage(named:"tear")!
if tear == nil {return}
let sz = tear.size
let top = sz.height*(1-percent)
UIGraphicsBeginImageContextWithOptions(sz, false, 0)
let con = UIGraphicsGetCurrentContext()
UIColor.redColor().setFill()
CGContextFillRect(con, CGRectMake(0,top,sz.width,sz.height))
tear.drawAtPoint(CGPointMake(0,0))
self.iv.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
我也迷上了一個UISlider,其操作方法,其value
轉換爲CGFloat的,並調用該方法,使移動滑塊來回移動紅色填滿,並在淚滴下來。我可以玩這個好幾個小時!
這是我的書的繪圖章節,它告訴我如何編寫該代碼:http://www.apeth.com/iOSBook/ch15.html – matt
太棒了!多好的答案。非常感謝幫忙。我真的很感激。這個方法非常合乎邏輯! – matcartmill
非常好的繪圖。 – matt