2013-09-21 2 views
2

ios6과 ios7 모두에서 실행되도록 설정하려는 stroryboards, 내비게이션 컨트롤러 및 autolayout을 사용하는 앱이 있습니다.ios6의 내비게이션/아래쪽 막대 아래에서 ios7 흐름으로 변환 된보기

저는 xcode5를 사용하여 응용 프로그램을 변환했으며 현재 ios7에서 잘 실행되지만, 탐색 막대와 하단 막대는 투명합니다 (원래는 없었습니다). 그리고보기가 그 아래로 흐릅니다 - 숨어 있습니다. 일부 컨트롤. ios7 앱을 이러한 막대 아래로 흐르지 않게 변환해도 (가장자리 확장/아래 막대 및 밑면 막대 사용 안 함 설정)이 설정은 유지됩니다.

나는 iOS7에가 (애플이 어쨌든 할 우리가 원하는 것을) 바에서보기를 흐르게하고 투명을 사용하지 iOS6의 강제로 주먹 뷰 컨트롤러의 viewDidLoad에 메서드에 다음 코드를 추가하여 주위에 일했다 바.

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 
    self.navigationController.toolbar.barStyle = UIBarStyleBlackOpaque; 
} 

이 작동하는 것 같군,하지만 난이 작업을 수행해야하고 내가 근본적인 뭔가를 놓친 거지 걱정됩니다 이유를 이해하지 않습니다.

편집 :이 '솔루션'에 대한 다른 우려 사항은 ios6 아래의 xcode5의 미리보기가 iOS 6 아래 시뮬레이터에서 실행될 때 레이아웃을 정확하게 반영하지 않는다는 것입니다 (실제 ios6 장치가 있음). 지금 테스트하기에 편리). xcode5의 새로운 미리보기 기능은 iOS 6가 위쪽 및 아래쪽 막대 아래에서보기를 흐르지 않으므로 사용 가능한 공간에 맞추기 위해 컨트롤을 함께 축소한다고 가정합니다.

알리

답변

4

에 관계없이 OS 버전이 시도 (이것은 최근에 나에게 유사한 문제를 해결) :

self.navigationController.navigationBar.translucent = NO; 
self.navigationController.toolbar.translucent = NO; 
+0

확인을하는 데 도움이

if(__IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_6_1) { self.navigationController.navigationBar.translucent = NO; self.navigationController.toolbar.translucent = NO; } 

희망을 할 수있는을, 나는 조금 깔끔 볼 수 있습니다. 그러나 나는 왜 우리가 이것을해야하는지에 관해서 궁금하다. xcode5의 버그입니까? –

+0

그 버그일지도 모르겠지만, 이전 iOS 릴리즈에서 같은 방식으로 구현 된 정의되지 않은 동작 중 하나라고 오히려 말하고 싶습니다. 그리고 iOS 7에서 갑자기 변경되었습니다. –

0

나는이 당신을 도울 것입니다 있는지 확실하지 않습니다,하지만 또 다른 옵션은 거기 당신의 상황 : __IPHONE_6_1 매크로를 사용해보십시오. 내가 예를 들어 있습니다

if(__IPHONE_7_0) { 
    NSLog(@"Hello"); 
} 

그래서 그냥이 당신에게

관련 문제