CoronaCards — iOS

Obj-C/UIKit 集成

CoronaCards 提供以下两个类供你使用:CoronaViewCoronaViewController。此指南说明如何将它们集成到本机 iOS 项目中。

CoronaView

CoronaView 类是 UIView/GLKView 类的子类。如果你使用 Xcode 故事板/界面生成器,则需要使用 CoronaView 覆盖 UIView。这允许你创建全屏嵌在单视图应用程序项目中的 CoronaCards 应用。

CoronaViewController

CoronaViewControllerUIViewController/GLKViewController 类的子类。如果你正在构建一个多视图应用,则可以以编程方式使 CoronaView 成为子视图。通常,你会在它不是根控制器时(例如,CoronaViewController是另一个控制器的子项时)实例化一个 CoronaViewController

在将 CoronaViewController 创建为子控制器时,你必须通过以下步骤覆盖父控制器的 viewDidLoad 方法

  1. 实例化 CoronaViewController 并确保它在 CoronaView 的生命周期内存在。在以下示例中,coronaController 是父控制器的属性,在赋值后就会隐式保留下来。

  2. CoronaViewController 添加为父控制器的子控制器。确保父控制器的通知会传播到 CoronaViewController,例如在父视图显示或隐藏时。

  3. 调整 CoronaView 的大小。当此视图以编程方式加载时,其默认大小为屏幕大小。

  4. CoronaView 添加为父控制器视图的子视图。

  5. 告知 CoronaView 运行哪个 main.lua 文件。在以下示例中,我们运行存在于 .app 捆绑包根目录的 main.lua。但是,你可以通过调用 runWithPath:parameters: 来选择任何 main.lua 文件。

// This method belongs to the parent UIViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.coronaController = [[[CoronaViewController alloc] init] autorelease];  // (Step 1)
    [self addChildViewController:self.coronaController];  // (Step 2)

    CoronaView *coronaView = (CoronaView *)self.coronaController.view;

    // Same size as parent view
    coronaView.frame = self.view.frame;  // (Step 3)

    [self.view addSubview:coronaView];  // (Step 4)

    [coronaView run];  // (Step 5)
}

透明叠加层

在 iOS 中,CoronaView 可以拥有透明背景。要实现这一点,需要满足两个条件

  1. 指示 iOS 在 UIView 本身上启用透明度
// [Obj-C]
coronaView.backgroundColor = [UIColor clearColor];
coronaView.opaque = NO;
  1. 通过将 alpha 密钥设为 0,指示 Corona 使用透明 OpenGL 曲面
-- [Lua]
display.setDefault( "background", 0, 0, 0, 0 )