2012-05-26 3 views
0

GLKView의 초기 크기를 설정하려고합니다 (기본적으로, 탭바의 존재에도 불구하고 화면의 크기와 동일하게 설정해야합니다). 스토리 보드를 사용하고 있기 때문에 GLKView는 GLKViewController init 메소드 내에서 자동으로 생성됩니다 (확실하지는 않지만 문서화되지는 않았지만 그렇게 생각합니다). GLKViewController에서 난 단지의 viewDidLoad 방법을, 여기있다 :스토리 보드를 사용하여 GLKView의 초기 크기를 설정하십시오.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 
    if (!self.context) { 
     NSLog(@"Failed to create ES context"); 
    } 

    GLKView *view = (GLKView *)self.view; 
    view.context = self.context; 
} 

그럼, 나는 스토리 보드를 사용하지 않는 경우, 나는이 같은 것을 써서 : 그러나 스토리 보드를 사용하는 경우

EAGLContext * context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 
GLKView *view = [[GLKView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
view.context = context; 
view.delegate = self; 

GLKViewController * viewController = [[GLKViewController alloc] initWithNibName:nil bundle:nil]; 
viewController.view = view; 

를, 나는 - 어떤 결과 나 기존 뷰의 프레임을 변경하려면 새 GLKView을 만든 다음 viewController.view에 할당하는 것을 시도했다

GLKView *view = [[GLKView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

:이 작업을 수행 할 수있는 기회가 없습니다.

다른 방법으로 GLKView의 크기를 설정하거나 변경할 수 있습니까?

답변

0

해결책을 찾았습니다.

먼저 스토리 보드에서 GLKViewController의 "Wants Full Screen"속성을 true로 변경해야합니다. 이 조건과 같이 GLKView 크기를 조정하지 않고 상태 표시 줄을 숨길 수 :

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; 

두 번째, 우리는 전체 화면 프레임에 TabBar의의 서브 뷰의 프레임을 변경해야합니다. 이것은 아래에 아래에 탭 바를 제시하는 유일한 작업 방법 인 것 같습니다. 이 메서드는 TabViewController 자식 클래스에 있어야합니다.

for (UIView *view in self.view.subviews) 
{ 
    if ([view isKindOfClass:[UITabBar class]]) 
    { 
     [UIView animateWithDuration:0.4f 
         animations:^{ 
          [view setAlpha:0.f]; 
         } 
         completion:nil]; 
     break; 
    } 
}  
: 필요할 때

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect tabbarFrame = CGRectZero; 
    for (UIView *view in self.view.subviews) 
    { 
     if ([view isKindOfClass:[UITabBar class]]) 
     { 
      tabbarFrame = view.frame; 
      break; 
     } 
    }  

    for (UIView *view in self.view.subviews) 
    { 
     if (![view isKindOfClass:[UITabBar class]]) 
     { 
      view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, 
            view.frame.size.width, view.frame.size.height + tabbarFrame.size.height); 
     } 
    } 
} 

그리고 또,이 코드의 짧은 조각으로, 탭 표시 줄을 숨길 수 있습니다