2014-10-07 3 views
0

저는 iOS 개발에 익숙하지 않으므로 무지를 변명하십시오.iOS - 사용 가능한 세로 공간

나는 2 개의보기, UIWebView을 가지고 있으며, 다른보기에는 webview에로드 된 페이지를 탐색하기위한 컨트롤이 있습니다 (아래 그림 참조).

컨트롤 막대가 때때로 숨겨져 있으며 컨트롤 막대를 표시하거나 숨기더라도 UIWebView에 동적으로 사용 가능한 공간을 채우고 싶습니다.

어떻게 이것을 달성 할 수 있으며 선호하는 방법 (자동 레이아웃, 프로그래밍 방식 등)은 무엇입니까?

enter image description here

+0

당신이 코드 또는 스토리 보드 또는 XIB에서 뷰를 작성하고 있습니까? –

+0

스토리 보드 있음. – Steve

답변

1

스토리 보드에서 자동 레이아웃을 사용한다고 가정합니다. 당신은 일곱 개 웹보기에 제약과 도구 모음이 있어야합니다 constraints

이러한 제약

상단, 왼쪽 및 루트보기로 웹보기의 오른쪽 가장자리 핀을; 루트보기에 도구 모음의 왼쪽, 아래 및 오른쪽 가장자리; 도구 막대의 상단 모서리에 웹보기의 하단 모서리가 표시됩니다.

당신은 도구 모음 (스크린 샷에서 강조 제약)의 하단 제약에 뷰 컨트롤러에 콘센트를 연결해야합니다

outlet to toolbar bottom constraint

이 제약의 상수는 기본적 핀으로 제로 도구 모음의 아래쪽 가장자리는 루트보기의 맨 아래에 있습니다. 도구 모음을 숨기려면 제약 조건의 상수를 도구 막대의 높이로 설정하십시오. 당신은 아마 그것을 애니메이션을 적용 할 :

- (void)hideToolbar { 
    [UIView animateWithDuration:0.2 animations:^{ 
     self.toolbarBottomConstraint.constant = self.toolbar.frame.size.height; 
     [self.view layoutIfNeeded]; 
    }]; 
} 

설정, 도구 모음을 표시하려면 제약의 다시 제로로 일정 :

- (void)showToolbar { 
    [UIView animateWithDuration:0.2 animations:^{ 
     self.toolbarBottomConstraint.constant = 0; 
     [self.view layoutIfNeeded]; 
    }]; 
} 
0

당신은 몇 가지 방법으로이 작업을 수행 할 수있다; 가장 좋은 방법은 이전의 코딩 방법이 프로젝트에 무엇이든간에 메쉬를 작성하는 것입니다.

- (void)layoutSubviews { 
    CGRect frame = self.webView.frame; 
    frame.size.height = self.bottomBar.frame.origin.y; 
    self.webView.frame = frame; 
} 

당신은 추가 할 수 있습니다 제약 :

당신은 layoutSubviews의 프레임을 바꿀 수

- (void)loadView { 
    [self.webView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_webView]-[_bottomBar]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_webView, _bottomBar)]]; 
} 

당신은뿐만 아니라 스토리 보드에 제약 조건을 추가 할 수 있습니다,하지만 난을 만드는 방법을 알고하지 않습니다 이것을 설명하는 gif. 이미 스토리 보드를 사용하고 있다면 이것을 고려해야합니다.

하단 막대의 위치에 애니메이션을 적용하는 경우 WebView의 프레임 크기를 동기화하는 것이 좋습니다. NSLayoutConstraints를 사용하면이 작업이 자동으로 수행됩니다. 또는 동일한 애니메이션 블록에서 웹보기 프레임을 업데이트 할 수 있습니다.

조사 할 또 다른 사항은 표시되는 최대 높이와 ​​일치하는 웹보기의 프레임을 동일하게 유지하는 것입니다. 아래쪽 막대를 표시하거나 숨길 때 webView.scrollView.contentInset을 조정하여 아래쪽 내용 패딩을 변경하십시오.

관련 문제