如何让叠加视图与底层视图一起转动/旋转?

时间:2013-06-25 21:25:41

标签: ios uiimageview screen-orientation

下面的代码可以在两个可能的横向方向中的一个中正常工作,但是当我将设备180转向另一个lanscepe方向时,我加载的图像自下而上与下面的视图相比。

所以我所拥有的是在故事板上创建的视图顶部的代码中创建的视图(覆盖整个屏幕,其上有图像)。

问题是:半透明叠加视图的左上角是否可以绘制在底层视图所在的左上角的相同位置?。我需要使用叠加视图来转换底层视图。

这里我让视图覆盖(覆盖)整个屏幕

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;

1 个答案:

答案 0 :(得分:1)

您添加到UIWindow的内容不会尊重设备轮换。这是UIViewController的一大特色 - 自动响应旋转事件。如果通过将视图添加到UIViewController的视图层次结构中找不到工作方式,则需要手动侦听旋转事件并以编程方式调整UIView的位置。