2012-01-26 2 views
0

Я добавил функциональность UIView, расширив drawRect. Это отлично работает для простого UIView, но проблема в том, что я хочу, чтобы он работал также для UILabel, UIButton, UIImageView и любого другого компонента, который наследует UIView.наследуется от подкласса UIView

Мне было интересно, что это лучший способ достичь этого. Могу ли я сделать подкласс UILabel (например), который наследует от MyView вместо UIView?

ответ

-1

Вы можете сделать категорию UIView и переопределить DrawRect функции, так что все подклассы UIView, что вызов [super drawRect:...] будет использовать эту функцию категории, хотя вы должны быть очень осторожны, делая это, так как переопределить что-то очень простые там. Я сделал это вовремя с UINavigationBar, когда мне нужно было добавить туда фоновое изображение. Но учтите, что не все подклассы UIView звонят [super drawRect:...].

+1

категория позволяет мне только переопределить реализацию, а не расширять ее, что означает, что я не могу вызвать [super drawRect:] внутри моего переопределенного метода. Мне нужно расширить базовую функциональность drawRect, а не переопределять ее. – adamsiton

+0

Согласно сессии WWDC 2011 «Совершенствование стабильности вашего приложения» - вы никогда не должны перегружать drewRect. Рекомендованная практика Apple заключается в расширении класса UIView –

+0

, если это поможет: http://stackoverflow.com/questions/1405060/using-super-in-an-objective-category –

Смежные вопросы