2011-11-06 4 views
1

UINavigationBar에 범주가 있습니다. drawRect 함수는 탐색 모음에 사용자 지정 로고를 그립니다. 내 애플 리케이션에서 하나의보기 컨트롤러가 이 아닌은 맞춤 로고를 그리는 것을 좋아합니다.Objective-C에서 카테고리 동작을 무시할 수 있습니까?

카테고리의 drawRect 기능을 우회 할 방법이 있습니까?

답변

1

Nope; 당신은 할 수 없습니다. 또는 (swizzling을 통해) 할 수는 있지만 그렇게해서는 안됩니다. 즉, 미래에 충돌을 일으키거나 잠재적으로 앱을 거부하게하는 좋은 방법 인 시스템 동작을 수정하고 있습니다.

일반적으로 클래스의 비헤이비어를 사용자 정의하려는 경우 하위 클래스의 인스턴스를 서브 클래 싱하고 사용하면됩니다.

2

UINavigationBar의 두 개의 다른 하위 클래스를 사용하고 두 하위 클래스 중 하나에 범주를 배치합니다.

0

당신이해야 할 일이 있다면 HIG에 대해 아마 뭔가 잘못하고있는 것입니다.

Matt Gallagher는이 경우 사용할 수있는 'supersequent' implementation 호출에 대한 기사를 작성했습니다.

이런 일을 성취하기위한 적절한 방법이 아니라는 사실을 기억하십시오. 미래에는 깨지기 쉽지만, 그런 기술을 사용하지 말라는 조언을드립니다!

0

내비게이션 막대에서 drawRect를 "대체"하기 위해 카테고리를 사용하면 더 이상 지원되지 않으므로 ios5에서 더 이상 문제가되지 않습니다.

새 UIAppearance 변경 사항을 살펴 보거나 Daniel이 말했듯이 UINavigationBar의 여러 하위 클래스를 사용해야합니다.

관련 문제