단추를 원할 경우 UINavigationBar
의 서브 클래 싱을 통해 완전히 달성 할 수 있습니다. height
이 UINavigationBar
인 것은 읽기 전용 속성임을 기억해야합니다.
스타일하지만 tappable하지 :
는 그래서 우리가 탐색 모음을 서브 클래스 화해, 거기에 버튼을 추가 가정하자. 당신은 이것을 할 수 있고 멋지게 보일 것입니다. 예를 들어 :
- (void)drawRect:(CGRect)rect
{
self.backgroundColor = [UIColor lightGrayColor];
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(self.frame.size.width/2-50, 0 , 100, 100)];
[myButton setBackgroundColor:[UIColor lightGrayColor]];
[myButton setTitle:@"Normal" forState:UIControlStateNormal];
[myButton setTitle:@"Highlighted" forState:UIControlStateHighlighted];
[self addSubview:myButton];
[self sendSubviewToBack:myButton];
}
그러나 당신은 당신의 버튼을 UINvaigationBar
아래 비 tapeable하는 문제에 직면 할 것이다. (답변의 맨 아래에 이미지를 게시합니다)
따라서 원하는 경로가 분명하지 않습니다. 그것을 시도하지 마십시오.
스타일하지만 tappable하지 2 : 당신은 당신의 네비게이션 바의 서브 클래스에
- (CGSize) sizeThatFits:(CGSize)size {
return CGSizeMake(custom_width, custom_height);
}
을이 메소드를 오버라이드 (override) 그리고 (이 예를 들어 UIBezierPath
를 사용 tappable
오른쪽 마스크 수
) 방법 :
요 너 UINavigationBar
에 막대기를 만들어야 해. 무엇을 (당신이 모든 화면에 원하는 경우) 내가 여기서 할 것입니다 것은 :
- 그릴 수
UIViewController
의 종류 확인 (예 -이 쉬운 방법입니다) UIButton
을.
- 스타일 당신이 원하는 무엇이든이 '있는 UIButton'(당신이 '있는 UIButton'에
- 핀 액션하려는 경우 :
[btn addTarget:self action:@selector(menuShow:) forControlEvents:UIControlEventTouchUpInside];
menuShow:
방법은
- 당신은 버튼을 때마다 그리기 호출 할 수 있습니다 범주에 선언되어야한다 . 두 개의 분리형있을 것입니다 거기에 볼 수있는 뷰 컨트롤러를 다시 그려야 할
보기 :. UINavigationBar
및 UIButton
이것은 당신이이 작은 버튼 아래 내용을 설정할 수있다 그것을 테이프로 만들 수 있습니다.
왜 탐색 막대를 숨기고 다른보기를 사용합니까? iOS7 때문에;) Apple이 iOS7에서이를 변경하면 예를 들어 의사보기 NavigationBar를 다시 작성해야하며 추가보기 만 있으면 아무 것도 할 필요가 없습니다.
고마워, 그게 내가 원하는거야! – ignotusverum
기꺼이 도와 드리겠습니다.) – Kuba
이것은 나를위한 완벽한 해결책이 될 것이지만 약간의 설명을 얻을 수 있습니까? "UButton을 그리는 UIViewController 범주 만들기 (예 : 가장 쉬운 방법입니다)." 즉, UIViewController 범주가 -drawRect 또는 그 종류의 항목을 재정의합니까? 그리고 AppDelegate에서 카테고리를 가져 왔습니까? 아니면 UINavigationBar를 하위 클래스로 가져 와서 가져 오시겠습니까? 감사합니다. – Ryan