Вы можете изменить цвет заливки, перерисовав всю форму. Как вы упоминаете, просто позвоните [self setNeedsDisplay]
и в вашей реализации drawRect:
измените цвет заливки в соответствии с событием.
К сожалению, вы не можете изменить цвет заливки фигуры без перерисовки, но в зависимости от случая вы можете избежать перерисовки и добиться требуемого эффекта с помощью других средств, таких как изменение режима наложения. Просмотрите документацию CGContext, чтобы узнать, есть ли что-то, что может удовлетворить ваши потребности.