iOS和日冕视图景观问题

时间:2017-02-20 04:41:54

标签: ios objective-c iphone corona

我正在尝试使用电晕卡将电晕(游戏平台)与iOS项目集成。以下是我想要实现的目标:

  • 以编程方式从AppDelegate.m加载电晕视图控制器(ViewController.m / ViewController.h)
  • 用于电晕视图控制器的强制横向模式

以下是代码:

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。希望这会有所帮助。

1 个答案:

答案 0 :(得分:0)

这是因为当您从Landscape mode转到Portrait mode时,屏幕的宽度和高度会发生变化。因此,coronaView.frame.size.width != [UIScreen mainScreen].bounds.size.widthPortrait转移到Landscape

要解决这些问题,最好使用AutoLayoutviewDidLayoutSubviews的{​​{1}}中设置框架或设置框架,

ViewController

-(void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    CoronaView *coronaView = (CoronaView *)_coronaController.view;
    coronaView.frame = self.view.frame;
}