Ios 快速进度指示器图像遮罩

Ios 快速进度指示器图像遮罩,ios,swift,mask,progress,Ios,Swift,Mask,Progress,首先,该项目是使用Swift构建的 我想创建一个自定义的进度指示器,在脚本运行时“填满”。该脚本将调用从远程服务器提取的JSON提要 为了更好地想象我在追求什么,我做了如下: 我猜会有两个PNG图像;一个白色和一个红色,然后根据进度量简单地做一些掩蔽 对此有什么想法吗?对于这一点,掩蔽可能是过分了。每次只需重新绘制图像。当您这样做时,您绘制红色矩形以填充图形的下半部分,达到您想要的高度;然后绘制液滴图像(PNG),它在中间具有透明度,因此红色矩形显示出来。因此,一个PNG就足够了,因为每次重画

首先,该项目是使用Swift构建的

我想创建一个自定义的进度指示器,在脚本运行时“填满”。该脚本将调用从远程服务器提取的JSON提要

为了更好地想象我在追求什么,我做了如下:

我猜会有两个PNG图像;一个白色和一个红色,然后根据进度量简单地做一些掩蔽


对此有什么想法吗?

对于这一点,掩蔽可能是过分了。每次只需重新绘制图像。当您这样做时,您绘制红色矩形以填充图形的下半部分,达到您想要的高度;然后绘制液滴图像(PNG),它在中间具有透明度,因此红色矩形显示出来。因此,一个PNG就足够了,因为每次重画时都可以“实时”绘制红色矩形

我非常喜欢你的画,所以我想把它变成现实,所以这是我的工作代码(我的PNG名为tear.PNG,
iv
是我界面中的UIImageView;
percent
应该是介于0和1之间的CGFloat):

我还连接了一个UISlider,它的action方法将其
转换为CGFloat并调用该方法,这样来回移动滑块可以在泪滴中上下移动红色填充。我可以玩上几个小时


这是我书中关于绘画的章节,它告诉我如何编写代码:太棒了!多好的回答啊。非常感谢你的帮助。我真的很感激。这个方法很有逻辑!
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()
}