2013-11-09 3 views
3

나는 다음과 같은 이미지처럼 사용자 정의 탐색 바 개발자 응용 프로그램에 원하는 탐색 표시 줄의 중심,하지만 난 정말 내비게이션 막대를 이미지처럼 보이게 만드는 방법을 모르겠다. 내가해야 할 일을 조언 해 주시겠습니까? 모든 종류의 문서에 대한 링크가 멋져요! 나에게 도움이되지 않습니다 NAVBAR에 대한아이폰 OS 사용자 정의 모양의 네비게이션 바

비슷한 질문 :

편집 :

내 아이디어는 다음과 같습니다 : 사용자 정의 탐색 모음 높이를 기본 크기보다 약간 크게 만들고 가장자리에 투명도가있는 화살표가있는 배경 이미지를 추가하십시오.

답변

5

단추를 원할 경우 UINavigationBar의 서브 클래 싱을 통해 완전히 달성 할 수 있습니다. heightUINavigationBar 인 것은 읽기 전용 속성임을 기억해야합니다.

스타일하지만 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에 막대기를 만들어야 해. 무엇을 (당신이 모든 화면에 원하는 경우) 내가 여기서 할 것입니다 것은 :

  1. 그릴 수 UIViewController의 종류 확인 (예 -이 쉬운 방법입니다) UIButton을.
  2. 스타일 당신이 원하는 무엇이든이 '있는 UIButton'(당신이 '있는 UIButton'에
  3. 핀 액션하려는 경우 : [btn addTarget:self action:@selector(menuShow:) forControlEvents:UIControlEventTouchUpInside];
  4. menuShow: 방법은
  5. 당신은 버튼을 때마다 그리기 호출 할 수 있습니다 범주에 선언되어야한다 . 두 개의 분리형있을 것입니다 거기에 볼 수있는 뷰 컨트롤러를 다시 그려야 할

보기 :. UINavigationBarUIButton 이것은 당신이이 작은 버튼 아래 내용을 설정할 수있다 그것을 테이프로 만들 수 있습니다.

왜 탐색 막대를 숨기고 다른보기를 사용합니까? iOS7 때문에;) Apple이 iOS7에서이를 변경하면 예를 들어 의사보기 NavigationBar를 다시 작성해야하며 추가보기 만 있으면 아무 것도 할 필요가 없습니다.

enter image description here

+0

고마워, 그게 내가 원하는거야! – ignotusverum

+0

기꺼이 도와 드리겠습니다.) – Kuba

+0

이것은 나를위한 완벽한 해결책이 될 것이지만 약간의 설명을 얻을 수 있습니까? "UButton을 그리는 UIViewController 범주 만들기 (예 : 가장 쉬운 방법입니다)." 즉, UIViewController 범주가 -drawRect 또는 그 종류의 항목을 재정의합니까? 그리고 AppDelegate에서 카테고리를 가져 왔습니까? 아니면 UINavigationBar를 하위 클래스로 가져 와서 가져 오시겠습니까? 감사합니다. – Ryan

1

사용자 정의 모양보기를 탐색 막대에 titleView로 추가 할 수 있습니다. clipsToBounds가 NO로 설정되어 클리핑되지 않도록하십시오.

2

UINavigationBar를 하위 클래스로 만들 필요가 없습니다. UIView 만들기 UIImageView 필요한 모양으로 이미지가있는 배경으로 버튼을 추가합니다.

하위 클래스 UINavigationController 숨기기 UINavigationBar, 사용자 지정 탐색 모음을 추가하십시오.

+0

UINavigationController를 하위 클래스로 만들 필요가 없습니다. "탐색 표시 줄 표시"옵션이 있습니다. – Fogmeister

2

우선 닫기 탐색 줄 사용 -

self.navigationController.navigationBarHidden = YES; 

을이어서 필요한 높이에 UIView를 작성 내비게이션 바의 높이 44px.Then 배경 이미지보기 요구있는 UIButton의 객체를 생성하고 하위 뷰로서 생성 UIView의 모든 객체를 추가하는 것 네비게이션 바처럼 보일거야. 고마워.