На данный момент я переопределяю drawRect
в представлении, чтобы иметь возможность обрезать цветной прямоугольник маской (используя CGContextClipToMask
inside 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 );