2015-01-11 50 views
5

首先,這個項目是使用Swift構建的。Swift Progress Indicator Image Mask

我想創建一個自定義的進度指示器,當腳本運行時「填滿」。該腳本將調用從遠程服務器提取的JSON訂閱源。

爲了更好地觀察我後,我做了這個:

enter image description here

我的猜測是有兩個PNG圖像;一個白色和一個紅色,然後根據進度數量簡單地做一些遮罩。

對此有何看法?

+0

非常好的繪圖。 – matt

回答

5

掩蔽可能矯枉過正。每次只需重新繪製圖像。當你這樣做時,你繪製紅色的矩形來填充繪圖的下半部分,到你想要的任何高度;然後繪製液滴圖像(PNG),該圖像在中間具有透明度,因此紅色矩形顯示爲透過。所以,一個PNG就足夠了,因爲每次重繪時都可以將紅色矩形繪製爲「實時」。

我喜歡你的繪圖這麼多,我想把它給生活帶來的,所以這裏是我工作的代碼(我的PNG被稱爲tear.pngiv是我的接口一個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的,並調用該方法,使移動滑塊來回移動紅色填滿,並在淚滴下來。我可以玩這個好幾個小時!

enter image description here

+0

這是我的書的繪圖章節,它告訴我如何編寫該代碼:http://www.apeth.com/iOSBook/ch15.html – matt

+0

太棒了!多好的答案。非常感謝幫忙。我真的很感激。這個方法非常合乎邏輯! – matcartmill