2014-01-17 3 views
1

viewDidLoad 메서드에서 실제 뷰 크기를 동적으로 결정하는 방법을 많이 검색했습니다.viewDidLoad에서 viewcontroller의 뷰 크기를 동적으로 결정합니다.

가로 모드와 세로 모드 모두에서 iOS6과 iOS7 모두에서 작동하는 것처럼 보이는 접근 방식입니다.

더 나은 솔루션이 있습니까?

- (CGSize)actualSize { 
    CGFloat widht; 
    CGFloat height; 

    // Determin height and widht 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    if (orientation == UIDeviceOrientationLandscapeRight || orientation == UIDeviceOrientationLandscapeLeft) { 
     widht = kHeightSelfView; 
     height = kWidthSelfView; 
    } else { 
     widht = kWidthSelfView; 
     height = kHeightSelfView; 
    } 

    // Determin navigationbar height 
    CGFloat navigationBarHeight = self.navigationController.navigationBarHidden ? .0f : (MIN(self.navigationController.navigationBar.frame.size.height, self.navigationController.navigationBar.frame.size.width)); 

    // Determin navigationbar height 
    CGFloat statusbarHeight = [DeviceCompatibility isIOS7] ? (MIN(SharedApplication.statusBarFrame.size.width, SharedApplication.statusBarFrame.size.height)) : .0f; 

    return CGSizeMake(widht, height - navigationBarHeight - statusbarHeight); 
} 

답변

-1

대신 높이 & 폭을 따기, 당신은 다음과 같이 뷰의 프레임을 선택할 수 있습니다 : 여기

내 코드입니다

// Adjusts the frame of the child view. 
    CGRect frame = self.view.frame; 
    CGRect linkedFrame = scene.view.frame; 
    linkedFrame.origin.x -= frame.origin.x; 
    linkedFrame.origin.y -= frame.origin.y; 

을하고 당신이 그들을 유연하게 할 수 있으므로 올바르게 크기가 조정됩니다.

// The scene's main view must be made flexible so it will resize properly 
     // in the container. 
     scene.view.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
             UIViewAutoresizingFlexibleHeight); 

필요 :)

+0

정확히는 아니지만 귀하의 코드에서 배웠습니다. 귀하의 의견에 감사드립니다. – flatronka

+0

적어도 투표를 한 후 자유롭게하십시오;) –

0

일반적으로 viewWillAppear에서보기 기반 지오메트리 만 수행해야합니다. 뷰의 프레임은 viewDidLoad에 아직 설정되지 않았지만 viewWillAppear이 호출되기 전에 올바르게 설정됩니다.

+0

의견을 보내 주셔서 감사합니다. viewDidLoad 내에서 내보기를 만들고 모든 작은보기에 대한 ivars 선언 할 나중에 viewWillAppear에서 프레임을 설정할 싶지 않습니다. 그것에 대해 어떻게 생각하세요? – flatronka

관련 문제