iOS 11 내 비게 이 션 표시 줄 되 돌리 기 단 추 를 제거 하 는 두 가지 방법 으로 바 꾸 기(Method Swizzling)

3140 단어 ios탐색 표시 줄
방법 1:BarButton Item 의 텍스트 스타일 을 투명 색상 으로 설정 합 니 다.코드 는 다음 과 같 습 니 다.

[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal]; 
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateHighlighted]; 
   그 밖 에 이런 방법 으로 인해 title 이 가운데 에 있 지 못 하고 많이 이동 할 수 있 습 니 다.다음 과 같 습 니 다.(표시 되 지 않 지만 네 비게 이 션 표시 줄 왼쪽 의 큰 부분 을 차지 합 니 다)

     방법 2:UIViewController 에 분 류 를 추가 한 후 load 방법 에서 Method Swzilling 방법 으로 ViewDid Appear 를 교환 합 니 다.일부 코드 는 다음 과 같 습 니 다.

+(void)load {
  swizzleMethod([self class], @selector(viewDidAppear:), @selector(ac_viewDidAppear));
}
- (void)ac_viewDidAppear{
  self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
                       initWithTitle:@""
                       style:UIBarButtonItemStylePlain
                       target:self
                       action:nil];
  [self ac_viewDidAppear];
}
void swizzleMethod(Class class, SEL originalSelector, SEL swizzledSelector)
{
  // the method might not exist in the class, but in its superclass
  Method originalMethod = class_getInstanceMethod(class, originalSelector);
  Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
  // class_addMethod will fail if original method already exists
  BOOL didAddMethod = class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
  // the method doesn't exist and we just added one
  if (didAddMethod) {
    class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
  }
  else {
    method_exchangeImplementations(originalMethod, swizzledMethod);
  }
}
주의사항:
전체 backButton Item 에 값 을 부여 해 야 합 니 다.👇이 방법 은 안 됩 니 다.backBarButton Item 은 기본 값 이 비어 있 기 때문에 nil 방법 에 대한 메 시 지 를 보 냅 니 다.기본 성명 은 실행 되 지 않 습 니 다참조 홈 페이지self.navigationItem.backBarButtonItem.title = @" ";left BarButton Item 과 backBarButton Item 의 표시 관계:
left BarButton Item 이 있 으 면 현재 VC 의 left BarButton Item 을 우선 표시 하고,없 으 면 이전 VC 의 backBarButton Item 을 표시 하 며,없 으 면 이전 VC 의 title 을 표시 합 니 다참조 홈 페이지   홈 페이지

총결산
위 에서 말 한 것 은 편집장 이 소개 한 iOS 11 에서 두 가지 방법 으로 네 비게 이 션 표시 줄 반환 버튼 을 제거 하 는 문 자 를 교체 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기