0

下面的代码在两种可能的横向方向之一中工作正常,但是当我将设备 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;
4

1 回答 1

1

您添加到 UIWindow 的内容不会考虑设备旋转。这是 UIViewController 的一大特点——自动响应旋转事件。如果您无法通过将视图添加到 UIViewController 的视图层次结构来使其工作,那么您将需要手动侦听旋转事件并以编程方式调整 UIView 的位置。

于 2013-06-25T23:08:15.913 回答