CoronaView
The CoronaView
class is a subclass of the UIView
/GLKView
class. If you're using the Xcode Storyboard / Interface Builder, you need to override UIView
with CoronaView
. This allows you to create a full-screen CoronaCards app within a Single View Application project.
CoronaViewController
The CoronaViewController
is a subclass of the UIViewController
/GLKViewController
class. If you're building a multi-view app, you can programmatically make the CoronaView
a child view. Typically, you instantiate a CoronaViewController
when it's not the root controller, for example when the CoronaViewController
is a child of another controller.
When creating a CoronaViewController
as a child controller, you must override the viewDidLoad
method of the parent controller via the following steps:
Instantiate the CoronaViewController
and ensure that it exists for the lifetime of the CoronaView
. In the example below, coronaController
is a property of the parent controller that implicitly retains upon assignment.
Add the CoronaViewController
as a child controller of the parent. This ensures that notifications from the parent controller are propagated to the CoronaViewController
, for example when the parent view appears or disappears.
Size the CoronaView
. When this view is loaded programmatically, it defaults to the size of the screen.
Add the CoronaView
as a child view of the parent controller's view.
Tell CoronaView
which main.lua
file to run. In the example below, we run the main.lua
that is present at the root of the .app
bundle. However, you can choose an arbitrary main.lua
file by calling runWithPath:parameters:
instead.
// 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)
}
Transparent Overlays
In iOS, a CoronaView
can have a transparent background. To accomplish this, two things are required:
- Instruct iOS to enable transparency in the
UIView
itself:
// [Obj-C]
coronaView.backgroundColor = [UIColor clearColor];
coronaView.opaque = NO;
- Tell Corona to utilize an transparent OpenGL surface by setting the
alpha
key to 0
:
-- [Lua]
display.setDefault( "background", 0, 0, 0, 0 )