У меня тоже есть эта проблема.Я сузил это до следующей ситуации:
Кажется, что это происходит, когда я переключаюсь с одного UIView на второй.В моем случае пользователь выбирает инструмент рисования в одном UIView, затем рисует на подложке UIView (холст).
Кажется, что первоначальный штрих меняет прямоугольник, полученный в drawRect, с того, что вы вставили вполный размер представления.После того, как эти один или два drawRects были нарисованы, это не меняет того, что вы там поместили.
Я могу доказать, что это setNeedsDisplayInRect, потому что, если я прокомментирую оскорбительную строку, drawRect больше не будет вызываться.Прямоугольник непосредственно перед вызовом показывает соответствующий суб прямоугольник для обновления, прямоугольник в drawRect показывает другой прямоугольник.
Опять же, это происходит только при первоначальном переходе от одного UIView к другому (кажется).