我正在尝试使用电晕卡将电晕(游戏平台)与iOS项目集成。以下是我想要实现的目标:
以下是代码:
AppDelegate.m
ViewController *viewController = [[ViewController alloc] init];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
ViewController.m
@interface ViewController ()
@property (nonatomic, strong) CoronaViewController *coronaController;
@end
- (void)viewDidAppear:(BOOL)animated {
_coronaController = [[CoronaViewController alloc] init];
[self addChildViewController:_coronaController];
CoronaView *coronaView = (CoronaView *)_coronaController.view;
coronaView.frame = self.view.frame;
[self.view addSubview:coronaView];
[coronaView run];
}
以下是它的外观截图:
问题在于,当我去风景时,图像应该占据整个屏幕,而只是显示部分图像。
*更新* 通过执行以下操作,我能够实现这一目标:
CGRect appFrame = [UIScreen mainScreen].bounds;
_coronaView.frame = CGRectMake(0, -162, appFrame.size.height, appFrame.size.width);
[self.view addSubview:_coronaView];
[_coronaView setNeedsLayout];
但是,我不确定为什么我必须将我的y设置为-162。希望这会有所帮助。
答案 0 :(得分:0)
这是因为当您从Landscape mode
转到Portrait mode
时,屏幕的宽度和高度会发生变化。因此,coronaView.frame.size.width != [UIScreen mainScreen].bounds.size.width
从Portrait
转移到Landscape
要解决这些问题,最好使用AutoLayout
在viewDidLayoutSubviews
的{{1}}中设置框架或设置框架,
ViewController
或
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
CoronaView *coronaView = (CoronaView *)_coronaController.view;
coronaView.frame = self.view.frame;
}