2013 이전/iOS개발

[iPad 개발] PopoverController contentSize 문제

하구루 2017. 2. 25. 16:32

PopoverController 를 사용하다보면 사이즈 때문에 골머리를 썩을 경우가 많을 것이다.

일단 가장 평범한 방법은 해당 PopoverController에 들어갈 해당 UIViewController에
- (CGSize)contentSizeForViewInPopover {
    return CGSizeMake(320, 480);
}
위 처럼 해당 하는 함수를 override 해주면 리턴하는 사이즈로 PopoverController 사이즈를 조절 해준다.
하지만 여기도 문제점이 하나 있다.
navigationController를 사용할때 push나 pop을 하게 되면 늘어나기는 하지만 줄어 들지는 않는다.
구글링을 통해서 얻게된 방법인데, 일종의 꼼수라고 볼수 있겠다.
- (void) forcePopoverSize 
{
    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, 
                                          currentSetSizeForPopover.height - 1.0f);
    self.contentSizeForViewInPopover = fakeMomentarySize;
}


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self forcePopoverSize];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
    self.contentSizeForViewInPopover = currentSetSizeForPopover;
}

위 처럼 ViewController에 해당하는 함수에 위 내용을 추가만 해주면 된다.
모두 ViewController 멤버를 사용하는 것이니, 바로 가져다 붙여 써도 잘 적용될것이다.
해당 메소드 이름을 정확히 확인하고 적용 바란다.
처음에 잘못 보고 적용을 해서 삽질을 했엇다. ㅠㅠ

각 viewController에 위사항을 적용하면, 언제 그랫냐는 듯이 pop, push 간에 PopoverController크기가 늘었다 줄었다 한다.

하지만 여기도 문제는 있다.
ViewController 사이의 사이즈 크기가 차이가 많이 나면 정신없이 움직여서 산만한 느낌이 든다.
이 기능이 꼼수를 통해서만 이루어 지는걸 봐서는 정신 없게 움직이는것을 방지하기 위해 그렇지 않을까 싶다.

때문에, 이 소스의 적용은 상황에 따라 잘 적용해야 할 것이다.


반응형