В данный момент я переопределяю drawRect
в представлении, чтобы иметь возможность обрезать цветной прямоугольник с помощью маски (используя CGContextClipToMask
внутри drawRect
).
Иногда я меняю цвет этого обрезанного прямоугольника. В этом случае drawRect
вызывается снова, перерисовывая и обрезая прямоугольник новым цветом.
Теперь я не хочу менять цвет сразу, а оживить это. Проблема в том, что анимация не выполняется при переопределении drawRect (drawRect вызывается только один раз и сразу).
Есть ли способ выполнить эту анимацию, возможно, путем создания подкласса представления, чтобы я все еще переопределял drawRect
в суперклассе, но анимация каким-то образом выполняется через подкласс, так что drawRect из суперкласса выполняется несколько раз в анимация?
Или также возможно вообще не переопределять drawRect
, и все же иметь возможность каким-то образом обрезать этот прямоугольник маской?
drawRect
выглядит примерно так:
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGImageRef maskImage = [[UIImage imageNamed:maskName] CGImage];
CGContextClipToMask(ctx, rect, maskImage);
CGContextSetFillColorWithColor(ctx, self.currentColor);
CGContextFillRect( ctx, rect );