iOS 7.0 상단/하단 드래그시 컨트롤센터 메뉴 프로그램 코드로 제어하기

posted-at2014.04.09 18:51 :: posted-inProgramming/iOS/iPhone :: posted-byNarrL

최근에 OpenGLES2.0 을 사용해서 게임을 개발하고 있는데, 게임화면 윗부분이나 아랫부분을 드래그 할때마다 컨트롤 센터로 연결되는 메뉴가 나오면서 opengl 프레임 드랍 현상이 발생하여 골머리를 썩었다.


안드로이드를 자주 다뤄본 필자로써는 당연히 이 기능을 어플 상에서 제어할 수 있으리라 생각했지만..

구글링 해본 결과, 프로그램 코드로 이것을 제어하는건 불가능하다. 하여간 애플의 이런 고집은 도무지 이해할 수가 없다.

어떻게든 편법이라도 찾아보려 했으나 없는 듯 하니, 게임의 터치가 이 부분과 충돌되는 경우엔 유저에게 옵션에서 이 기능을 끄도록 고지하는 수 밖에 없다.


그래도 최소한의 처리는 해놔야 할 것 같아서, Status Bar 라도 끄기로 했다.


* 최상위 ViewController에 함수 추가

- (BOOL)prefersStatusBarHidden
{
    return YES;
}


* 최상위 ViewController의 viewDidLoad에 추가

if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
    // iOS 7
    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}


* Info.plist 에 아래 추가

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>




번외. ios 7.0 옵션에서 상단, 하단 탭메뉴 (컨트롤 센터) 끄기

[설정 -> 제어 센터]

에서 아래 사진처럼 끄면 된다.

위에껀 잠금화면에서, 밑에건 어플 상에서 기능 사용 여부