iOS 내 비게 이 션 표시 줄 의 기본 사용 집합

8003 단어 ios탐색 표시 줄
1.탐색 표시 줄 스타일 설정
네 비게 이 션 표시 줄 의 스타일 을 설정 하면 전역 설정 과 부분 설정 으로 나 눌 수 있 습 니 다.
1.전역 설정
전역 설정 은 일반적으로 AppDelegate 에서 설정 합 니 다.그러면 전체 app 이 유효 합 니 다.관련 코드 와 효과 도 는 다음 과 같 습 니 다.

//1.         
[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
 
//2.         
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBarImg"] forBarMetrics:UIBarMetricsDefault];
 
//3.         
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:
 [UIColor purpleColor], NSForegroundColorAttributeName,
 [UIFont boldSystemFontOfSize:25], NSFontAttributeName, nil]];
 
//4.            
[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];

//5.       
[[UINavigationBar appearance] setHidden:YES];

탐색 표시 줄 스타일 효과 그림 설정
2.부분 설정:
전역 설정 후,그 중 몇 개의 페이지 내 비게 이 션 표시 줄 스타일 만 다 르 면,우 리 는 부분 설정 을 사용 할 수 있 습 니 다.
주의 1:부분 설정 은 전체 설정 방법 과 같 지만 호출 방법의 대상 은"self.navigationController.navigationBar"로 바 뀌 었 습 니 다.
주의 2:부분 설정 은 반드시 하나의 원칙 에 따라 야 합 니 다."페이지 에 들 어 갈 때 수정 하고 페이지 를 떠 날 때 복원 합 니 다."
예 를 들 어 우리 가 한 페이지 에 들 어가 면 현재 네 비게 이 션 표시 줄 의 배경 색 을 회색 으로 설정 하고 다음 과 같은 방법 을 사용 해 야 합 니 다.

//         :  
- (void)viewWillAppear:(BOOL)animated{
 [super viewWillAppear:animated];
 [self.navigationController.navigationBar setBarTintColor:[UIColor grayColor]];
}

//            :  
- (void)viewWillDisappear:(BOOL)animated{
 [super viewWillDisappear:animated];
 [self.navigationController.navigationBar setBarTintColor:[UIColor orangeColor]];
}
2.사용자 정의 네 비게 이 션 표시 줄 반환 단 추 를 해결 한 후 옆으로 미 끄 러 지 는 문 제 를 해결 합 니 다.
iOS 네 비게 이 션 표시 줄 에 있 는 되 돌아 오 는 단추 형식 이 단일 하기 때문에 대부분의 경우 네 비게 이 션 표시 줄 되 돌아 오 는 단 추 를 사용자 정의 해 야 합 니 다.그러나 이때 우 리 는 페이지 의 사 이 드 슬라이딩 기능 이 사용 되 지 않 는 다 는 것 을 발견 했다.이 문 제 를 해결 하기 위해 서 는 App 에서 사용자 정의 네 비게 이 션 컨트롤 러 를 사용 해 야 합 니 다.예제 코드 는 다음 과 같 습 니 다.

#import “BaseNavigationController.h"
//   :            UIGestureRecognizerDelegate
@interface BaseNavigationController ()<UIGestureRecognizerDelegate>
@end

@implementation BaseNavigationController
- (void)viewDidLoad {
 [super viewDidLoad];
 //   :                  
 self.interactivePopGestureRecognizer.delegate = self;
}
 

//   :      
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
 if (self.childViewControllers.count == 1) {
 //            ,          ,
 return NO;
 }
 return YES;
}
@end
3.탐색 표시 줄 아래쪽 의 분할 선 숨 기기
네 비게 이 션 의 밑 부분 할선 을 숨 기 는 것 도 우리 가 가끔 만 나 는 개발 수요 입 니 다.먼저 우 리 는 Xcode 의 Debug View Hierarchy 기능 을 통 해 네 비게 이 션 표시 줄 의 보기 구 조 를 볼 수 있 습 니 다.효 과 는 다음 과 같 습 니 다.

탐색 표시 줄 보기 계층 도
그림 에서 알 수 있 듯 이 네 비게 이 션 바 의 밑부분 할선 은 UIImageView 대상 이 고 높이 는 0.5 에 불과 하기 때문에 우 리 는 이 를 통 해 네 비게 이 션 바 의 밑부분 할선 대상 을 얻 을 수 있 습 니 다.하나의 보기 컨트롤 러 에서 이 수 요 를 실현 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.

#import "TestViewController.h"
@interface TestViewController ()
//   :      ,            
@property (nonatomic, strong) UIImageView *navBarBottomImage;
@end

@implementation TestViewController
- (void)viewDidLoad {
 [super viewDidLoad];
 ////   :            
 UIImageView *navBarBottomImage = [self findNavBarBottomImage:self.navigationController.navigationBar];
 self.navBarBottomImage = navBarBottomImage;
 }

//   :           
//         
- (void)viewWillAppear:(BOOL)animated{
 [super viewWillAppear:animated];
 self.navBarBottomImage.hidden = YES;
}
//          
-(void)viewWillDisappear:(BOOL)animated{
 [super viewWillDisappear:animated];
 self.navBarBottomImage.hidden = NO;
}

//   :               
//           UIImageView,      1.0   ,        
-(UIImageView *)findNavBarBottomImage:(UIView *)view {
 if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
 return (UIImageView *)view;
 }
 for (UIView *subview in view.subviews) {
 UIImageView *imageView = [self findNavBarBottomImage:subview];
 if (imageView) {
 return imageView;
 }
 }
 return nil;
}
4.네 비게 이 션 표시 줄 에 의 한 레이아웃 문제
1.내용 오프셋 속성:automaticallyAdjustsScrollViewInsets
automatically Adjusts ScrollView Insets 는 보기 컨트롤 러 의 속성 입 니 다.기본 값 은 YES 입 니 다.슬라이더 보기(UIScrollView 의 보기 계승)를 보기 제어 에 최적화 하 는 데 사 용 됩 니 다.
iOS 시스템 의 네 비게 이 션 표시 줄 UINavigation Bar 와 탭 표시 줄 UITabBar 는 기본적으로 반투명 퍼 지 효과 입 니 다.이 경우 시스템 은 보기 컨트롤 러 의 UI 레이아웃 을 최적화 합 니 다.보기 컨트롤 러 에 처음 추 가 된 보 기 는 미끄럼 류 보기 이 고 프레임 은 전체 화면 이 큰 시간 입 니 다.시스템 은 contenInset 을 자동 으로 조정 합 니 다.미끄럼 보기 의 내용 이 UINavigation Bar 와 UITabBar 에 가 려 지지 않도록 합 니 다.
그러나 일반적인 보기 에 대해 우 리 는 아직도 주의해 야 한다.비 미끄럼 보기 의 구 조 는 네 비게 이 션 표시 줄 과 태그 표시 줄 의 높이 를 고려 하고 가 려 지지 않도록 주의해 야 한다.예 를 들 어 구 조 를 할 때 네 비게 이 션 표시 줄 의 높이 를 더 해서 내용 이 네 비게 이 션 표시 줄 에 가 려 지지 않도록 해 야 한다.
우 리 는 코드 를 통 해 효 과 를 테스트 할 수 있 습 니 다.기본 네 비게 이 션 바(반투명)의 보기 컨트롤 러 에 다음 과 같은 코드 를 추가 할 수 있 습 니 다.

//UITextView     ,        ,        
UITextView *leftTextView = [[UITextView alloc] init];
leftTextView.frame = CGRectMake(0, 0,100, kDeviceHeight); //
leftTextView.backgroundColor = [UIColor lightGrayColor];
leftTextView.text = @"   ,       ,       。   ,       ,       。       ,       。       ,       。";
leftTextView.font = [UIFont systemFontOfSize:18];
leftTextView.editable = NO;
[self.view addSubview:leftTextView];
 
//UIView      ,          
UIView *rightView= [[UIView alloc] initWithFrame:CGRectMake(150, 0, 100, 100)];
rightView.backgroundColor = [UIColor redColor];
[self.view addSubview:rightView];

탐색 표시 줄 이 투명 한 상태 에서 미끄럼 보 기 는 자동 으로 이동 하고 일반 보 기 는 가 려 집 니 다.
사실은 이런 시스템 의 최적화 도 닫 는 것 을 제어 할 수 있다.최 적 화 를 닫 은 후에 미끄럼 보 기 는 일반 보기 와 마찬가지 로 그 구조의 원점(0,0)을 설정 하면 그 내용 은 네 비게 이 션 표시 줄 에 덮 여 있 고 관건 적 인 코드 는 다음 과 같다.

//automaticallyAdjustsScrollViewInsets 11.0   ,      
if (@available(iOS 11.0,*)) {
 scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else{
 //automaticallyAdjustsScrollViewIn,           
 self.automaticallyAdjustsScrollViewInsets = NO;
}
2.가장자리 확장 속성:edgesForExtendedLayout
edgesforExtended Layout 도 보기 컨트롤 러 의 레이아웃 속성 입 니 다.기본 값 은 UIRectEdgeAll 입 니 다.즉,현재 보기 컨트롤 러 에 있 는 각종 UI 컨트롤 러 는 네 비게 이 션 표시 줄 과 탭 의 존 재 를 무시 합 니 다.레이아웃 을 설정 할 때 원점 을(0,0)으로 설정 하면 보 기 는 네 비게 이 션 표시 줄 아래 로 확 장 됩 니 다.
따라서 설정 할 수 있 습 니 다self.edgesForExtendedLayout=UIRectEdgeNone.이때 보기 컨트롤 러 의 내용 은 네 비게 이 션 표시 줄 과 탭 표시 줄 을 피 할 수 있 습 니 다.위의 left TextView 와 rightView 입 니 다.UIRectEdge None 이후 의 효과 도 는 다음 과 같 습 니 다.

self.edgesForExtendedLayout=UIRectEdgeNone
3.탐색 표시 줄 투명 속성 반투명
상기 두 가지 속성 은 모두 네 비게 이 션 표시 줄 의 반투명 한 상황 에서 의 레이아웃 문 제 를 해결 하 는 것 입 니 다.그러나 우리 의 수요 가 네 비게 이 션 표시 줄 의 불투명 이 라면 보기 컨트롤 러 의 컨트롤 러 는 기본적으로(0,64)부터 레이아웃 을 시작 합 니 다.네 비게 이 션 표시 줄 의 불투명 한 방법 은 다음 과 같 습 니 다.

self.navigationController.navigationBar.translucent= NO;
관련 글:
iOS 상태 표시 줄 사용
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기