2009-12-31 11 views

답변

210

내용보기와 둘러싸는 스크롤보기 사이에 삽입 간격을 설정합니다. aScrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0);

여기에 유익한 스크린 샷 (그림 1-3)가 좋은 iOS Reference Library article on scroll views입니다 - 내가 여기에 텍스트를 통해 그것을 복제 할 수 있습니다 :

_|←_cW_→_|_↓_ 
    |  | 
--------------- 
    |content| ↑ 
↑ |content| contentInset.top 
cH |content| 
↓ |content| contentInset.bottom 
    |content| ↓ 
--------------- 
    _|_______|___ 
      ↑ 


    (cH = contentSize.height; cW = contentSize.width) 

스크롤 뷰 콘텐츠 뷰를 둘러싸 플러스 어떤 패딩이 제공됩니다 지정된 컨텐츠 삽입에 의해

+0

그러면 UIScrollView에 패딩을 추가하는 데 사용됩니까? 그렇지 않으면 실용적인 예를 들어 줄 수 있습니다. 내 문제는 구현하는 방법이 아니라 구현시기입니다. – ForeignerBR

+27

예, 스크롤보기 내부에 내용을 채 웁니다. CSS의'padding' 속성과 비슷합니다. –

+0

이것에 피기 백 죄송합니다, 나는 그것의 자신의 질문을 이동할 수 있지만, 이것을 기반으로 contentHeight 이외의 각 contentInset 값을 0으로 설정하면 실제로 어떻게됩니까? 스크롤바 전체를 강제로 높이로 설정합니까? – jakev

2

위대한 질문입니다.

은 (scroller이있는 UIScrollView입니다) 다음과 같은 예를 생각해

float offset = 1000; 
[super viewDidLoad]; 
for (int i=0;i<500; i++) { 
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(i * 100, 50, 95, 100)] autorelease]; 
    [label setText:[NSString stringWithFormat:@"label %d",i]]; 
    [self.scroller addSubview:label]; 
    [self.scroller setContentSize:CGSizeMake(self.view.frame.size.width * 2 + offset, 0)]; 
    [self.scroller setContentInset:UIEdgeInsetsMake(0, -offset, 0, 0)]; 
} 

인 세트가 원하는 내용의 "창"을 가지고 스크롤 기능을 강제 할 수있는 유일한 방법입니다. 이 샘플 코드는 여전히 엉망이지만 생각은 거기에 있습니다. 삽입을 사용하여 UIScrollView에 "창"을 가져옵니다.

76

jball의 대답은 콘텐츠 삽입물에 대한 훌륭한 설명이지만 사용시기에 대한 대답은 아닙니다.

_|←_cW_→_|_↓_ 
    |  | 
--------------- 
    |content| ↑ 
↑ |content| contentInset.top 
cH |content| 
↓ |content| contentInset.bottom 
    |content| ↓ 
--------------- 
    |content|  
-------------↑- 

는 당신이 그것을 할 때 무엇을 얻을,하지만 그것의 유용성은 당신이 스크롤 할 때이다 : 나는 그의 다이어그램에서 빌릴 수 있습니다 내용의 맨 윗줄은 여전히있을 것

_|←_cW_→_|_↓_ 
    |content| ← content is still visible 
--------------- 
    |content| ↑ 
↑ |content| contentInset.top 
cH |content| 
↓ |content| contentInset.bottom 
    |content| ↓ 
--------------- 
    _|_______|___ 
      ↑ 

그건 여전히 스크롤보기의 프레임 안에 있기 때문에 표시됩니다. 상단 오프셋을 생각하는 한 가지 방법은 "스크롤 할 때 스크롤 뷰 아래로 내용을 얼마나 이동하여 상단으로 스크롤 할 수 있습니까?"입니다.

실제로 사용되는 곳을 보려면 빌드 아이폰의 사진 응용 프로그램. 탐색 표시 줄과 상태 표시 줄은 투명하며 스크롤보기의 내용은 아래에 표시됩니다. 스크롤 뷰의 프레임이 멀리 떨어져 있기 때문입니다. 그러나 콘텐츠 삽입물이 아닌 경우에는 맨 위로 이동할 때 투명 탐색 모음을 지우지 않아도됩니다.

+0

좋은 점은 인세 트를 사용하여 "흐림 효과가있는 상태 표시 줄에서 스크롤"효과를 만들 수 있다는 것입니다. – TheEye

+0

좋은 설명, upvoted. –

+0

사진 앱에 대한 예를 쉽게 이해할 수있었습니다. – abhi1992

7

콘텐츠 삽입물은 사용자 인터페이스의 다른 부분 아래로 이동하면서도 여전히 스크롤 막대를 사용하여 도달 할 수있는 콘텐츠가있는 문제를 해결합니다. 즉, 내용 삽입의 목적은 상호 작용 영역을 실제 영역보다 작게 만드는 것입니다. 우리는 화면의 세 가지 논리적 인 영역이 어디

는 경우를 생각해

TOP BUTTONS 

TEXT 

BOTTOM TAB BAR 

을 우리는 텍스트가 TOP BUTTONS 아래에 투명하게 표시되지 않습니다 싶어하지만 우리는 텍스트가 BOTTOM 탭 표시 줄 아래에 표시 할 그리고 여전히 스크롤링을 허용하여 BOTTOM TAB BAR 아래에 투명하게 앉아있는 텍스트를 업데이트 할 수 있습니다.

그런 다음 상단 원점을 TOP 버튼 아래에 놓고 높이는 하단 탭 막대의 하단을 포함하도록 설정합니다. BOTTOM TAB BAR 내용 아래에있는 텍스트에 액세스하려면 하단 탭을 BOTTOM TAB BAR의 높이로 설정합니다.

삽입자가 없으면 스크롤러는 내용을 입력 할만큼 스크롤 할 수 없게됩니다. 인세 트로, 내용물에 내용물 크기의 여분의 "BLANK CONTENT"가있는 것처럼 보입니다. 빈 텍스트는 실제 "컨텐트"에 "삽입"되어 있습니다. 이것이 컨셉을 기억하는 방법입니다.

1

contentInset없이 UIScrollView

에 패딩을 추가하는 데 사용, 테이블 뷰는 다음과 같이이다 : 효과는 다음과 같습니다

tableView.contentInset = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0) 

:

enter image description here

그런 다음 contentInset 설정 :

enter image description here

더 낫 겠지?

blog을 작성하여 contentInset을 연구하면 비판을 환영합니다.