2013-06-25 1 views
0

아래의 코드는 두 가지 가능한 가로 방향 중 하나에서 잘 작동하지만 장치 180을 다른 가로 세로 방향으로 돌리면 이미지가 아래쪽에있는보기와 비교할 때 아래쪽에 있습니다.오버레이보기가 기본보기로 회전/회전하도록하는 방법은 무엇입니까?

그래서 스토리 보드에 만든보기의 코드 위에 만든보기 (전체 화면 위에 오버레이하여 이미지가있는)가 있습니다.

질문 : 반투명 오버레이보기의 왼쪽 위 모서리는 기본보기가있는 곳의 왼쪽 위 모서리와 동일한 위치에 그려 질 수 있습니까?. 기본 뷰를 사용하려면 오버레이 뷰가 필요합니다.

여기 내가보기 커버 (오버레이)
self.overlayView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,[[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height)]; 

그럼 내가보기에 표시 할 좋아하는 이미지를로드 전체 화면을 보자.

UIImage* image = [UIImage imageNamed:@"image.png"]; 

여기가 내가 행운와 방향으로 모든 노력을 한 이미지

[overlayView setImage:image]; 

을 설정합니다. 내 앱이 자동으로 360 ° 회전하므로 상태 표시 줄이 항상 위로 올라와 있습니다.

누군가에게 감각을 가지기를 바랍니다.

편집 : 여기에 전체 코드가

UIWindow* keyWindow = [UIApplication sharedApplication].keyWindow; 
self.overLayView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,[[UIScreen mainScreen] bounds].size.width,[[UIScreen mainScreen] bounds].size.height)]; 

[overLayView setImage:[UIImage imageNamed:@"someImage1.png"]]; 
overLayView.tag = 1; //Used to remove the view in another function 
overLayView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5]; //Semi transparent 

CGRect viewFrames = CGRectMake([[UIScreen mainScreen] bounds].size.width - 100, [[UIScreen mainScreen] bounds].size.height - 100, 75, 75); 

self.exitHelpView = [[UIImageView alloc] initWithFrame:viewFrames]; 
[self.exitHelpView setImage:[UIImage imageNamed:@"imageOfXUsedToCloseWhenClicked.png"]]; 
self.exitHelpView.tag = 2; //Used to remove the view in another function 

[keyWindow addSubview:overLayView]; //The view covering the whole screen 
[keyWindow addSubview:self.exitHelpView]; //Image of an X 

을 사용 그리고 내 .H 파일에

@property (strong, nonatomic) IBOutlet UIImageView* overLayView; 
@property (strong, nonatomic) IBOutlet UIImageView* exitHelpView; 
+0

보기 계층 구조에서 실제로 overlayView를 표시하는 데 사용하는 코드를 게시하십시오. UIWindow에 직접 추가 하시겠습니까? 또는 뷰 계층 구조에 이미있는 다른 뷰에 하위 뷰로 추가하고 있습니까? – Idles

+0

코드가 게시됩니다 :-) 직접 UIWindow에 추가하고 있습니다. 나는 다른 뷰에 추가하려고했지만 오버레이에서 imageView (X 사용)를 제외한 모든 뷰에 터치를 제거하는 데 문제가있었습니다. – Sturla

답변

1

것들 당신이 장치의 회전을 존중하지 않습니다 UIWindow에 추가됩니다. 이것은 자동으로 회전 이벤트에 응답하는 UIViewController의 큰 특징 중 하나입니다. UIViewController의 뷰 계층 구조에 뷰를 추가하여 작동 방법을 찾을 수 없다면 수동으로 회전 이벤트를 수신하고 프로그래밍 방식으로 UIView의 위치를 ​​조정해야합니다.

+0

고마워, 나는 그런 것을 무서워했다. UIViewConrtoller hierachy에 추가하는 전투가 될 것입니다. (필자는 이미 시도했습니다.) 그래서 상태 표시 줄의 위치를보고 뷰를 회전 시키려고합니다. 나는 또한 그것을 정말로 시도했다. 그러나 운없이. 그러나 당신의 도움에 감사드립니다. – Sturla

관련 문제