2013-09-24 2 views
0

여기에 새 iOS 개발자가 있습니다. 세로 및 가로로 다른 이미지를 표시해야하는 여러보기가 있습니다. 저는 현재이를 성공적으로 구현했으며 초상화 이미지가 잘로드되고 회전시 가로 이미지도 잘로드됩니다. 장치가 다음 가로 방향으로 또 다른보기로 전환한다면, 그것은 잘못로드 - 등 방향 변경 처리에 대한 나의 코드 잘못된 크기, 해상도, 정렬하는 것은 다음과 같습니다 :가로보기는 세로 방향으로 만 로딩되고 회전 한 후에는 왜 표시됩니까?

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
    { 
     if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight)) 
     { 
      _image1.image = [UIImage imageNamed:@"Landscape.png"]; 
     } 
     else if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown)) 
     { 
      _image1.image = [UIImage imageNamed:@"Portrait.png"]; 
     } 
} 

나는 그것이 때문이라고 생각 메서드는 회전시에만 호출됩니다. 예를 들어 부적절한 초기 가로보기를 회전하면 올바른 이미지가 다시 한 번 표시됩니다. 초기 방향이 가로 방향 일 때 메서드를 실행하고 적절한 가로보기를로드하는 방법이 있습니까? 또는 정확한 이미지를 표시하는 방법? 감사합니다.

답변

0

마지막으로 방향 검사기를 추가하여이 문제를 해결했습니다.

@property (nonatomic, readonly) UIDeviceOrientation *orientation; 

그런 다음 내가있는 viewDidLoad 메소드에서 내하는 .m 파일이 추가 :

if(([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) { 
_image1.image = [UIImage imageNamed:@"Landscape.png"]; 
} 

이 검사 초기 방향이 가로이면 나는 내 .H에 다음을 추가했다. 그렇다면 내 Landscape.png 이미지가로드됩니다. 그렇지 않으면 스토리 보드에 설정된대로 기본 이미지가 내 Portrait.png이므로 오리엔테이션이 이미 세로 방향 인 경우로드됩니다. 건배!

편집 : 위 코드는 방향 잠금 장치와 같이 문제가 발생할 수 있으므로 권장하지 않습니다. 나는 아래, 오히려 기기의 방향보다, 상태 표시 줄의 방향을 확인하기 위해 그것을 변경 :

if(([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft) || 
([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight)) { 
_image1.image = [UIImage imageNamed:@"Landscape.png"]; 
} 

당신은 .H의 모든 변수를 선언해야하고, 단지의 viewDidLoad 방법에 위를 추가하지 마십시오 .

관련 문제