Maskowanie to prawdopodobnie przesada. Wystarczy przerysować obraz za każdym razem. Kiedy to zrobisz, narysujesz czerwony prostokąt, aby wypełnić dolną połowę rysunku, do dowolnej wysokości; następnie narysujesz obraz kropli (PNG), który ma przezroczystość pośrodku, przez co widać czerwony prostokąt. Tak więc jeden PNG wystarczy, ponieważ czerwony prostokąt można narysować "na żywo" za każdym razem, gdy przerysujesz.
lubiłem rysunek tak bardzo, że chciał doprowadzić go do życia, więc tutaj jest mój kod roboczych (mój PNG nazywa tear.png i iv
jest UIImageView w moim interfejsie; percent
powinny być CGFloat pomiędzy 0 i 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()
}
ja też podłączyć do UISlider którego sposób działania konwertuje Jego value
do CGFloat i nazywa tę metodę tak, że przesuwając suwak iz powrotem przenosi się czerwona wypełnić w górę iw dół w łzy. Mógłbym grać z tym przez wiele godzin!
Bardzo ładny rysunek. – matt