2013-04-25 2 views
1

UIBarButtonItem의 사용자 정의에 대한 대화가 UIButton으로 많이 있습니다. 그것은 아주 분명합니다. 내가 지금까지 찾지 못했던 점과 놀랄만한 점은 인터페이스 회전을 처리하는 커스텀 UIBarButtonItems에 대한 언급이 없다는 것입니다. 아이폰을 회전 시키면 바 버튼이 수직으로 눌려집니다. 그러나 UBarButtonItem을 일반적인 방법 (initWithCustomView: 메서드 호출)으로 사용자 정의하면 가로 방향으로 회전 한 후 압착되지 않습니다. 거기에 대한 해결 방법이 있습니까?UIBarButtonItem 및 인터페이스 회전의 사용자 정의

답변

1

글쎄, 내가 사용자 정의 UIBarButtonItem 클래스에서 꽤 UIApplicationDidChangeStatusBarOrientationNotification 처리와 솔루션을 발견했습니다.

0

새로운 방향 이미지와 텍스트로 UIBarButtonItem (사용자 지정 UIButton)을 다시 작성하거나 사용자 지정보기의 프레임을 다시 설정해야한다고 생각합니다. 당신이 IB에서 UIBarButtonItem을 추가 할 수 있습니다

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    UIButton *rightItemButton = (UIButton *)self.navigationItem.rightBarButtonItem.customView; 
    //resize the frame 
    if (isLandscape) { 

    } else if (isPortrait) { 
     .... 
    } 
} 
+0

'didRotateFromInterfaceOrientation :보기 컨트롤러의 메소드에서 버튼의 속성을 변경한다는 의미입니까? 내 의견으로는보기 코드 디자인의 관점에서 매우 못생긴 -보기 컨트롤러는 uinvaigationbar에 배치 된 uinavigationitem의 자식 인 barbuttons의 사용자 정의보기 인 단추를 조정하는 것 외에도 할 수있는 충분한 작업이 있습니다 - 미친 짓! 나는 사과가 더 나은 해결 방법을 가지고 있기를 바란다 ... – peetonn

+0

예, 사용자 정의보기이기 때문에 혼자서 제어해야하며 하위보기의 크기와 위치를 재설정하기 위해 ViewController에서 - (void) layoutSubviews를 재정의 할 수도 있습니다 – shanegao

+0

잘, 그래, 나는 동의한다. 그러나 아직도, 나의 의견으로는, 그러한 좋은 곡들은 "좋은"코드 디자인을 사용하지 못하게한다. - 예를 들어,이 경우에 나는 완전히 자율적이고 다루기 쉬운 바 버튼을 디자인하는 것이 더 논리적이다. 그 자체의 내용. 그리고 나는 사과가 이런 종류의'didAdjustFrameForNewOrientation :'호출이나 smth를 제공하면 특히이 상황을 해결할 수 있다고 생각합니다. – peetonn

0

당신은 스프링을 설정하고 기본 동작을 얻기 위해 스트럿 수 (당신은 프로그래밍 방식을 만들 필요가 없습니다). 이 솔루션은 나를 위해 일했습니다.

+0

hm. 너비가 있으며 이미지 인세 트를 사용자 정의 할 수 있습니다. 하지만 어쨌든, 내가 UIBarButtonItem에 질문이있는 것처럼 커스텀 뷰가 필요하면 어떨까요? (그 경우) – peetonn

+0

IB의 네비게이션 바에 커스텀 UIBarButton을 원한다면, 네비게이션 바에서 UIBarButtonItem을 드래그하고 UIButton을 UIBarButtonItem 안에 드래그 한 다음 UIButton을 원하는대로 커스터마이즈 할 수 있습니다 (배경, 제목 등). 귀하의 경우에는 단추 (또는 다른보기)가 들어있는 사용자 지정 UIView를 만들 수 있으며 동작을 얻기 위해 스프링 및 스트럿을 설정할 수 있다고 생각합니다. 참고 :이 사건을 테스트하지는 못했지만 이것이 작동하지 않는 이유는 없습니다. – danypata

+0

흠, xib에'UINavigationController'가 있으면 작동하는 것처럼 보입니다. 그러나, 그것은 나의 경우가 아니다. 어쨌든 힌트를 주셔서 감사합니다! – peetonn

관련 문제