Я просто переписал свою игру, чтобы использовать базовую анимацию, чтобы сделать ее быстрее.У меня есть UIView со слоем, который содержит много подслоев (игра «плитки»).Подслои листов на самом деле являются подклассами CALayer, которые рисуют свой собственный контент, используя drawInContext:
.Например, когда плитка выбрана, ее нужно перерисовать, поэтому я вызываю [tileLayer setNeedsDisplay]
и получаю кучу недопустимых ошибок контекста.Если я звоню [mainView setNeedsDisplay]
или [mainView.layer setNeedsDisplay]
, ни одна из плиток не перерисовывается.Как я могу заставить отдельную плитку (подкласс CALayer) перерисовывать?
EDIT: Из очень полезных комментариев я смог выяснить, что это происходит только тогда, когда подкласс CALayer рисуеткартинка.Вот ошибки:
<Error>: CGContextSaveGState: invalid context 0x0
<Error>: CGContextSetBlendMode: invalid context 0x0
<Error>: CGContextSetAlpha: invalid context 0x0
<Error>: CGContextTranslateCTM: invalid context 0x0
<Error>: CGContextScaleCTM: invalid context 0x0
<Error>: CGContextDrawImage: invalid context 0x0
<Error>: CGContextRestoreGState: invalid context 0x0
Вот строка кода, которая вызывает ошибки:
[[UIImage imageNamed:@"flag.png"] drawInRect:self.bounds];
Есть ли другой способ рисования изображения в подклассе CALayer?