Как определить причину, по которой вызывается drawRect? - PullRequest
1 голос
/ 21 марта 2011

У меня есть свой собственный NSView с кучей пользовательских кнопок, кнопки добавляются в качестве subView в методе drawRect NSView.

Теперь я обнаружил, что после нажатия кнопки вызывается drawRect родительского представления. Иногда это останавливается только когда я закрываю приложение - я знаю это из простого оператора журнала в drawRect.

Теперь я знаю, что в моем приложении, вероятно, есть большие архитектурные проблемы, вызывающие это. Куда мне обратиться, чтобы начать отслеживать, что вызывает повторное перерисовывание этого представления?

Спасибо!

1 Ответ

1 голос
/ 21 марта 2011

Прежде всего, вы не должны добавлять подпредставления в drawRect:.

Вы делаете какой-либо пользовательский рисунок или просто добавляете подпредставления? Если вы не занимаетесь рисованием, вам не следует реализовывать drawRect:.

Вы хотите добавить подпредставления в initWithFrame:, а затем установить кадры подпредставлений в layoutSubviews на основе self.bounds.

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.

РЕДАКТИРОВАТЬ: Просто понял, что вы спрашивали о NSView, а не UIView. Я никогда не использовал NSView, но, возможно, они работают аналогично.

РЕДАКТИРОВАТЬ 2: Я немного читал о NSView, и, похоже, у него layoutSubviews. Возможно, вам следует установить кадры в drawRect:? Я все еще уверен, что вы не хотите добавлять подпредставления в drawRect:.

...