Условия, когда drawRect's rect! = Self.frame - PullRequest
4 голосов
/ 20 августа 2009

У меня есть подкласс UIView, в котором я выполняю пользовательский рисунок. Когда вызывается drawRect:(CGRect)rect, rect.size имеет значение (64, 63) или (63, 64); self.frame.size is (64, 64).

У меня есть несколько экземпляров этого подкласса, большинство из которых получают ожидаемый (64, 64) размер для параметра drawRect.

Какие условия могут привести к тому, что некоторые из этих подклассов изменили drawRect границы, но не другие?

Дополнительные лакомые кусочки:

  • self.opaque НЕТ
  • self.transform меняется; Я использую его для поворота UIView с шагом в 90 градусов, но поворот представления не меняет rect.size при последующих вызовах на drawRect

1 Ответ

12 голосов
/ 20 августа 2009

Прямоугольник, переданный в drawRect, является тем прямоугольником, который система просит вас нарисовать (dirtyRect) в системе координат вашего представления.

Это может быть self.bounds или другой прямоугольник.

Как правило, вы должны просто игнорировать параметр и рисовать себя в self.bounds, если ваш рисунок не очень сложный. Обратите внимание на переданный параметр dirtyRect - это оптимизация, которую следует игнорировать, пока вы не профилируете свое приложение и не определите, что это горячая точка.

...