2010-05-14 5 views
3

앱 대리인으로 애플리케이션을 시작하는 동안 여러 컨트롤러를 사용하고 있습니다. 하나의 컨트롤러는 등록 용이고 두 번째 컨트롤러는 탭바입니다. tabbar가 잘로드되고 있었지만 등록 컨트롤러를 창에 밀어 넣었을 때 내용이 20 유닛 씩 올라 갔고 맨 아래에 좋은 흰색 빈 화면이 나타납니다. 따라서 viewdidload 메서드에서 등록보기 컨트롤러의 프레임을 다시 만들고 20 단위 아래로 밀어 넣었습니다. 이 코드는 응용 프로그램 실행에 대한 내 응용 프로그램 위임에ViewController가 푸시 될 때 화면 하단에서 20 픽셀 흰색이 남음

self.view.frame = CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height); 

및 코드 등록 컨트롤러 누를 때 공백은 하단에 왜 거기에 사람이 알고 있다면

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    if (![self accountExists]) { 
       //code if account does not exists on iphone app database 
     self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil]; 
     [window addSubview:registerAccount.view]; 
    } 
    else if([self autoLoginForAnyAccount]){ 
     //code for autologin to app 
    } 
    else { 
     self.tabBarController.selectedIndex = 1; 
     self.tabBarController.delegate = self; 
     [window addSubview:tabBarController.view]; 
    } 
    [window makeKeyAndVisible]; 
    return YES; 
} 

그때 나와 함께 공유하시기 바랍니다이었다.

답변

1

나는 그 문제를 알아 냈지만 이유는 밝히지 않았다. 문제는 창 크기입니다. 즉, 내 코드에서 registerViewController 인스턴스를 생성하고 있었기 때문에 크기는 상태 막대의 크기에서 창 크기를 뺀 크기였습니다 (상태 표시 줄 아래에 표시되어야하는보기 컨트롤러이기 때문에). 내가 윈도우에 registerViewController를 푸시했을 때 어떤 이유로 (이유를 모르겠다) 뷰 컨트롤러가 헤더의 상태 표시 줄을 인식하지 못해 registerViewController의 20px가 상태 표시 줄 뒤에 표시되었다. 그때 내 등록 컨트롤러의 프레임을 창 컨트롤러와 동일하게 설정하는 코드 registerAccount.view.frame = window.frame;을 시도했습니다. 이것은 하단의 빈 흰색 화면을 제거하고 창 크기 전체를 ​​차지하지만 현재보기 컨트롤러가 상태 표시 줄의 존재를 알기 위해 눈이 멀었 기 때문에 여전히 20px가 상태 표시 줄 뒤에있었습니다. 나는 화면에 내 모든 컨트롤러를 보여준 코드를 사용하여 상태 표시 줄을 제거하려고했지만 상태 표시 줄도 꼭 있어야했습니다.

(내 탭 표시 줄 컨트롤러와 마찬가지로) 내 mainWindow.xib 파일에 UIViewcontroller 개체를 추가하여 내 방식을 알아 냈고 해당 클래스를 registerViewController 및 registerViewController의로드 된 펜으로 지적했습니다. 또한 줄을 제거했습니다 self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil];

UIViewController *registerAccount;으로 대체하고 mainWindow.xib 파일에서 새로 추가 한보기 컨트롤러를이 컨트롤러에 연결했습니다. 이제는 영원히 잘 작동하지만 registerViewController 인스턴스를 push했을 때 viewcontroller가 상태 표시 줄을 보지 못하는 이유를 모르겠습니다. 그 이유를 아는 사람이 있으면 여기 나와 공유하십시오.

+0

이유를 아십니까? 나는 같은 문제로 어려움을 겪고있다. – Hemant

3

최근에 같은 문제가 발생했습니다. 많은 블로그를 참조한 후 & Q & 포럼에서 부적절한 프레임 설정으로 인해 공백 문제가 있음을 발견했습니다. 다음은

[self.view setFrame:CGRectMake(0,0, self.view.bounds.size.width, self.view.bounds.size.height)]; 

희망이 당신을 도울 것입니다 ... 내 옆에 매우 잘 작동하는 솔루션입니다.

감사합니다. iApple.

관련 문제