2016-10-08 1 views
1

일부 사용자 정의보기 컨트롤러 전환을 수행하고 있고 눌렀 던 단추의 중심에서부터 전환을 시작하고 싶습니다.UIBarButtonItem의 중심 위치를 얻는 방법

myCustomTransition.startingPoint = buttonPressed.center 

을하지만 내가 UIBarButtonItem를 사용하려면 내가 어떤 center 속성을 참조하지 않기 때문에, 실제로 어떻게, 버튼의 중심에서 시작하는 내 전환에게 :

UIButton을 위해 내가 할 수있는 UIBarButtonItem

제안 사항?

+0

네비게이션 바 중앙에 버튼을 놓아야합니다. – vaibhav

+0

@vaibhav : 아니요, 내 버튼이 오른쪽에 있습니다. 단지 위치를 알아야하지만, 내가 읽은 바에 따르면 UIBarButtonItem의 경계에 액세스 할 수있는 방법이 없습니다. – Kobe

+0

괜찮 았으면, 네비게이션 막대의 중앙에 'UIView'를 놓고 오른쪽 끝과 왼쪽 끝까지 확장 한 다음 경계선을 찾아 진행하십시오. – vaibhav

답변

1

UIBarButtonItem을 navigationItem.leftBarButtonItem 또는 navigationItem.rightBarButtonItem으로 사용하는 경우 UIBarButtonItem이 UIView를 상속하지 않기 때문에 직접 지오메트리 속성을 가져올 수 없지만 결국 까다로운 메서드를 사용하여 도형 속성을 얻을 수 있습니다.

enter image description here

UINavigationButton 당신의 목표는 RECT를 얻을 당신은 당신이 필요로 중심을 얻을 수 있습니다 :

은 남아있다 간단한의 ViewController과 오른쪽 UIBarButtonItem의 hierachy입니다.

- (void)handleItemPressed { 
UIView *targetView = nil; 
for (UIView *subView in self.navigationController.navigationBar.subviews) { 
    if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) { 
     for (UILabel *label in subView.subviews) { 
      if ([label isKindOfClass:[UILabel class]]) { 
       if ([label.text isEqualToString:"right"]) { 
        targetView = subView; 
        break; 
       } 
      } 
     } 
    } 
} 

CGRect rect = [targetView convertRect:targetView.frame toView:self.view]; 
CGPoint center_you_need = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)); 
} 

customeView를 사용하는 경우 customeView의 프레임을 포인트로 변환하면됩니다.