4

의 오른쪽에있는 공간을 제거하기 것은 그래서, 이것은 내가 달성하기 위해 노력하고있어입니다 :UINavigationBar

That's how it should look

그것은 사용자 정의 UIButton로 초기화 된 가져옵니다 UIBarButtonItemUINavigationBar입니다. 기본적으로이 같은
:

UIButton *favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[favoriteButton addTarget:target 
        action:action 
     forControlEvents:UIControlEventTouchUpInside]; 
favoriteButton.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f); 

UIImage *backgroundImage = [[UIImage imageNamed:@"favorite-button-background-orange"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 0)]; 
[favoriteButton setBackgroundImage:backgroundImage 
          forState:UIControlStateNormal]; 

UIBarButtonItem *favoriteButtonItem = [[UIBarButtonItem alloc] initWithCustomView:favoriteButton]; 

문제는 내가 UINavigationBar의 오른쪽에 그 불쾌한 작은 국경을 제거 할 수없는 것입니다.

That's how it looks

나는 " How to remove padding next to a UIBarButtonItem"에 설명하지만,이 일을 변경하지 않은으로 정의 TitleView을 설정했습니다.

음의 너비로 또 다른 UIBarButtonItem을 추가하려고했는데 (내가 읽은 일부 blogposts에서 제안했듯이)하지만 그 중 하나도 도움이되지 않았습니다.

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace 
       target:nil 
       action:nil]; 
negativeSpacer.width = -5.0f; 
self.navigationItem.rightBarButtonItems = %[favoriteButtonItem, negativeSpacer]; 

나는 아이폰 OS는 "둥근 테두리"일부 (피할 수없는?) 공간/패딩을 보유하고 있기 때문에 내가 그것을 변경할 수없는 것 같은데요? 제 질문은 이렇습니다. 이 제한 사항을 해결하려면 어떻게해야합니까? 맞춤 UINavigationBar 클래스를 만들어야합니까? UIBarButtonItem을 수정하여 어떻게 든 가짜로 만들 수 있습니까? 잘못된 구성 요소를 사용하고 있습니까?

+0

해결 방법이 있습니다. 이미지를 만들고 단추와 동일한 그라디언트 색상을 갖는 툴바/탐색 모음에 지정하는 것이 좋습니다. 집이 도움이 .. –

답변

-1

두 가지 해결책이 있습니다. (정확한 해결책이 아닐 수도 있음)

1) UINavigationBar을 하위 클래스로 만들어 재생해야합니다. 예를 들어 UIBarButtonItem오른쪽 모서리에 직접 그려야 할 수 있습니다.

2) UINavigationBar을 사용하는 대신 UIView을 사용하고 하위보기를 추가하여 정확히 UINavigationBar처럼 보이게 만듭니다.

두 번째 해결책이 귀하의 요구 사항에서 쉽게 달성되기를 바랍니다. 나는 당신의 요구를 성취 할 다른 방법이 없을 것이라고 생각합니다.

+0

로 불만족 스럽습니다.이 부분이 적당하다고 생각됩니다. (감사합니다! – paukul

1

탐색 모음의 기본 탐색 모음 단추 항목 (back button, right bar button and left barbutton)을 사용자 지정할 수있는 옵션이 없습니다. 요구 사항을 얻으려면 사용자 정의 탐색 모음을 사용할 수 있습니다.

+0

나에게 "사용자 정의 탐색 모음"에 관한 힌트를 줄 수 있습니까? 내가 무엇을 시도하든, 나는 오른쪽 테두리를 제거 할 수 없습니다. – paukul

+0

"기본 탐색 모음 단추 항목을 사용자 지정하는 옵션이 없습니다."테두리는 탐색 단추 항목에서 오는 것이 아니라 탐색 모음 자체에서 오는 것처럼 보입니다.내 탐색 막대 하위 클래스에서 내 자신의 drawRect 메서드를 구현조차도 도움이되지 않습니다. 이제는 더 이상 호출되지 않는 것 같습니다. – paukul

+0

내비게이션 막대를 숨기고 이미지 막대 위에 이미지 뷰를 유지하고 이미지 뷰 위에 단추를 추가하십시오. – Balu

1

두 번째 해결책은 실제로 작동합니다 (오늘 iOS6 & 7에서 테스트 됨). 문제는 rightBarButtonsItem 배열의 요소가 오른쪽에서 왼쪽으로 표시된다는 것입니다. 즉, 원하는 효과를 얻기 위해 음의 공간이 실제로 배열의 첫 번째 항목으로 나타나야합니다.