2014-02-06 2 views
1

여러분이 더 잘 이해할 수 있도록 내 문제의 샘플 프로젝트를 만들었습니다. 당신은 여기 그것을 얻을 수 있습니다iOS 7 컨테이너보기 컨트롤러가 자세히보기 컨트롤러를 작게 표시합니다.

https://github.com/nwalter08/iOS-7-Container-View-Controller-Probs

내 문제는 내가 UIViewController 보유 UINavigationController을 보유하고 Container UIViewController을 보유하고 UITabBarController을 가지고있다. 많이 알았어 :)

문제는 iOS 7에서 앱을 실행할 때 UIViewController이 전체 UINavigationController의 공간을 채우지 않는다는 것입니다. iOS 6에서 실행하면 문제가되지 않습니다.

일부 특수 메모는 tabBarnavigationBar의 속성을 NO로 설정 한 것입니다. IB 나 스토리 보드도 사용하지 않습니다.

UIViewController이 너무 짧고 노란색 UINavigationController 배경이 표시되는 것을 볼 수 있도록보기 컨트롤러에 색상이 지정되어 있습니다.

아이폰 OS 6

https://www.dropbox.com/s/lpl6wtmoy3dsn3c/iOS%20Simulator%20Screen%20shot%20Feb%206%2C%202014%2C%202.45.56%20PM.png

아이폰 OS 7

https://www.dropbox.com/s/f5r5oltb4ookteh/iOS%20Simulator%20Screen%20shot%20Feb%206%2C%202014%2C%202.46.21%20PM.png

업데이트 - 그래서 rdelmar의 대답은 그들 내부에 내용이 없음을 UIViews 위해 일하지만 난 내 코드 발견 내용이 늘어나고 적합하지 않았습니다. 나는 이것이 iOS 버그라고 확신하고 레이다를 애플에 제출했다. 내 문제를 해결하기 위해 UITabBarController 대체품을 사용했습니다. https://github.com/jinthagerman/JBTabBarController

+0

iOS 6/7 델타를 조정해야 할 수도 있습니다. http://stackoverflow.com/questions/17794037/interface-builder-what-are-the-uiviews-layout-ios-6-7-deltas-for –

+0

그는 IB를 사용하지 않습니다. –

+0

예 아니요, 나는 그 질문에서 언급 할 것입니다. – nickchuckwalter

답변

0

자세히보기 컨트롤러가 작아지지 않습니다. iOS 7의 navigationBar 아래로 이동합니다. navigationBar.translucent = NO로 설정하거나 xib/storyboard에 델타를 설정할 수 있습니다 (가지고있는 경우)

+0

'navigationBar.translucent'는 이미 NO로 설정되어 있습니다. 파란색보기 컨트롤러가 여전히 너무 짧습니다. – nickchuckwalter

0

탐색 표시 줄을 반투명으로 설정하지 않는다고해서 보기가 더 이상 그 아래 앉아 있지 않습니다. 이제는 더 이상 보이지 않는다는 것을 의미합니다.

보기 컨트롤러에서 edgesForExtendLayout에서 UIRectEdgeNone으로 설정하면 실제로보기가 탐색 모음 아래에서보기 컨트롤러의 보이는 영역으로 이동합니다.

+0

나는 이것을 시도했지만 아무 것도 변경하지 않는다. 작동하는 경우 github 프로젝트에서 내 코드를 볼 수 있도록 pull 요청을하십시오. – nickchuckwalter

0

이 방법으로 해결되지만 원하지 않는 다른 부작용이있을 수 있습니다.

--- a/TabBarContainerNavProblem/MyTabBarViewController.m 
+++ b/TabBarContainerNavProblem/MyTabBarViewController.m 
@@ -31,7 +31,7 @@ 
     BOOL isAtLeast7 = [version floatValue] >= 7.0; 

     if (isAtLeast7) { 
-   self.tabBar.translucent = NO; 
+   self.tabBar.translucent = YES; 
     } 
    } 
    return self; 
1

귀하의 문제는이 탭 표시 줄 컨트롤러에 내장 된 이후

UIView *contentView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

그것의보기는 화면의 크기 안, RedContainerViewController의에는 loadView 방법의 다음 줄에 있습니다. 해당 행을 [[UIView alloc] init]으로 변경하면 제대로 작동합니다.

+0

DING DING DING 우승자가 있습니다! 고맙습니다! – nickchuckwalter

+1

@nickchuckwalter이며 답변을 수락하여 우승자에게 수여해야합니다. – rdelmar

+0

하하 아멘! – nickchuckwalter

0

비슷한 질문에 대한 내 대답은 right here을 참조하십시오.

플래그를 설정 한 후에는보기가 예상대로 위치해야합니다.

+0

방금 ​​시도했지만 문제가 해결되지 않았습니다. – nickchuckwalter

관련 문제