iOS 11 내 비게 이 션 표시 줄 되 돌리 기 단 추 를 제거 하 는 두 가지 방법 으로 바 꾸 기(Method Swizzling)
[[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 에서 두 가지 방법 으로 네 비게 이 션 표시 줄 반환 버튼 을 제거 하 는 문 자 를 교체 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.