본문 바로가기
기술/iOS

Storyboard에서 가로/세로의 UI가 다를 때 대응 방법.

by 프리지크 2016. 6. 24.
반응형

Storyboard 에서 iPad용 UI를 만들고 있는데, 가로/세로에 대해 서로 다른 UI를 만들어야 하는 경우가 생겼다.

문제는 iPad에서는 iPhone처럼 Regular/Compact을 조절해서는 안된다는 것.

아래와 같이 해결했음. 


UITraitCollection을 이용해서 화면에 따라 모드를 지정해 준다.


Storyboard 상에서는 아래 모드로 작업을 해두고

세로를 작업할 때는 Width:Any, Height:Regular 로 하고,

가로를 작업할 때는 Width:Regular, Height:Compact로 했음.


RootViewController나 ParentViewController에 아래 코드를 추가하면 된다는데, 나는 NavigationController에 해 줬음.


- (UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController

{

    UITraitCollection *wRegular = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];

    UITraitCollection *hCompact = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];

    UITraitCollection *horizontal = [UITraitCollection traitCollectionWithTraitsFromCollections:@[wRegular, hCompact]];

    

    UITraitCollection *wAny = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassUnspecified];

    UITraitCollection *hRegular = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];

    UITraitCollection *portrait = [UITraitCollection traitCollectionWithTraitsFromCollections:@[wAny, hRegular]];

    

    if (CGRectGetWidth(self.view.bounds) < CGRectGetHeight(self.view.bounds))

    {

        return portrait;

    }

    else

    {

        return horizontal;

    }

}


참조 URL : http://stackoverflow.com/a/28268200

반응형