2010-05-12 5 views
1

프로그래밍 방식으로 정의 된 UIScrollView (응용 프로그램 프레임 사용)가 항상 위쪽 (아래 네비게이션 표시 줄)에 20 픽셀의 빈 공간을 남겨 둡니다. 어떻게 닫을 수 있습니까? 탐색 모음 응용 프로그램 프레임이 맨 위에 빈 줄을 남깁니다.

  • --- 신비의 차이 (? 10px)
  • ---- 내 Scrollviewcontent -

    • 상태 표시 줄
    • :

      UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
      vScrollView.backgroundColor = [UIColor redColor]; 
      

      내 화면은 다음과 같습니다 (빨간색 배경색)

    어떻게해야합니까? 그 갭을 피하기위한 프레임 크기?

  • 답변

    4

    틀린 프레임 좌표 "applicationFrame"을 사용했습니다. 모든 것을 바운스 할 때 잘 동작합니다.

    UIScrollView *vScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    
    0

    응용 프로그램이 info.plist 파일에서 상태 표시 줄 사용에 관해 알리는 내용은 무엇입니까? 활성화 또는 비활성화되어 있습니까? 올바르게 이해하면 상태 표시 줄의 20 픽셀을 보게됩니다.

    +0

    상태 표시 줄이 아니며 탐색 모음 아래에 간격이 있습니다. [[UIScreen mainScreen] applicationFrame] .origin.y의 NSLog는 20을 반환합니다. – iFloh

    1

    앱 대리인의 상태 표시 줄을 숨기고 있습니까?

    - (void) applicationDidFinishLaunching:(UIApplication *)application { 
        [application setStatusBarHidden:YES]; 
        ... 
    } 
    
    +0

    아니요, 상태 표시 줄이 표시됩니다. 더 깊이 생각해 보면 20 픽셀이 내 탐색 막대 일 가능성이 큽니다. 내 화면은 다음과 같습니다 (? 10px) - - 상태 표시 줄 탐색 모음 --- 신비의 격차 ---- (빨간색 배경 색상) 내 Scrollviewcontent는 – iFloh

    +0

    탐색 바는 20 개 이상의 것 픽셀을 높게 설정해야합니다. 상태 표시 줄은 높이가 20 픽셀이며 문제 해결을위한 좋은 방법입니다. –

    +0

    이제는 [[UIScreen mainScreen] applicationFrame] .origin.y를 0으로 덮어 썼습니다. 내 직감이 깨끗한 접근 방식이 아니라고하더라도, 그 속임수는 ... – iFloh

    2

    UIScreen-applicationFrame은 상태 표시 줄 (시계)이 제거 된 전체 화면 사각형입니다. 스크롤 뷰는 내비게이션 컨트롤러의 뷰 영역 내에 있으므로 내부 뷰의 좌표 공간에서 좌표를 사용해야합니다.

    UIScreen-bounds를 사용하는 경우에도 네비게이션 바가 가져야하는 공간을 포함하여 화면의 전체 크기가되므로 정확한 결과가 제공되지 않습니다. -bounds를 사용하면 실제로 UIScrollView가 화면 아래쪽에서 64 픽셀 떨어져 실행됩니다.

    당신이 UINavigationController가의 -loadView 방법에 스크롤 뷰를 만드는 가정하면,이 같은 작업을해야합니다 :

    - (void)loadView { 
        [super loadView]; 
        UIScrollView *sv = [[UIScrollView alloc] initWithFrame:self.view.bounds]; 
        [self.view addSubview:sv]; 
        [sv release]; 
    } 
    
    0

    나는 프로그램이 만들어집니다있는 UIScrollView와 유사한 문제에 직면했다. 상태 표시 줄 시작을 x-0 & y-0에서 표시하려면 scrollview 내용이 필요합니다. NavController에 내 ViewController를 임베드 할 때까지 작동했습니다. 탐색 바는 모든 화면에서 숨겨져 있습니다. 하지만 UIScrollView는 20 픽셀의 신비한 최고 공백을 가지고있었습니다. 모든 것을 시도했지만 다음 코드 행은 저에게 효과적이었습니다.

    self.automaticallyAdjustsScrollViewInsets = NO; 
    

    위의 내 viewDidLoad 메서드에서 위의 UIScrollView를 만들 때 위에 추가되었습니다. 희망이 나를 좋아하는 사람을 도와줍니다.

    편집 :

    인터페이스 빌더에서 할 수있는 방법을 찾았습니다

    • 이있는 UIScrollView를 포함하는 뷰 컨트롤러를 선택합니다.
    • 속성 관리자가 열립니다.
    • "Adjust Scroll View Insets"를 선택 취소하십시오. "View Controller"섹션 아래.
    관련 문제