drawRect
안에 을 사용하여 색칠 된 사각형을 클립 할 수 있도록보기에서 drawRect
을 덮어 쓰는 중입니다. 때로는이 클리핑 된 사각형의 색을 변경합니다. 이 경우 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);
마지막으로 애니메이션을 사용할 수 있도록 접근 방식을 사용하여 drawRect를 재정의 할 필요가 없었습니다. 타이머를 사용하거나 애니메이션 메서드를 재귀 적으로 실행할 필요가 없었습니다. 표준 CoreAnimation을 사용할 수 있기 때문입니다. 고마워요! 한 가지주의 할 점은 png 이미지 또는 선명한 색상의 이미지를 사용해야한다는 것입니다 (흑백 마스크는 더 이상 작동하지 않지만 문제는 없습니다). 또한 마스크 프레임을 maskLayer.frame = [self bounds]를 사용하여 마스크 할 뷰 경계로 설정해야합니다. – JayAr