「がんばれない」けど「がんばりたい」

ITエンジニアの仕事のこと。AI、機械学習、ディープラーニング。地頭力。車のこと。

公式ofxUIKitアドオン設定

数ヶ月前にofxUIKitがoFのアドオンページに公開されていましたー。

satoruhigaさんが以前、openframeworks.jpのフォーラムで公開されていたものを使用していたのですが、emptyExampleプロジェクトにアドオンとして使用する方法を備忘として書きます。

  1. ofxUIKitをダウンロードしadonsフォルダに入れます。
  2. emptyExampleプロジェクトをコピーして適当な新規プロジェクト作成。
  3. プロジェクトをxcodeで開きadonsフォルダにofxUIKitを追加。
  4. ofxiiphone-info.plistにMain nib file base nameを追加。値としてはMainWindowなど。
  5. UIApplicationDelegateプロトコルを実装したNSObjectのサブクラスを新規作成。(AppDelegateクラス)
  6. RootViewControllerクラスをofxUIViewControllerのサブクラスとして新規作成。 ※ObjectiveC++のクラスとする。
  7. main.mmの書き換え。AppDelegateクラスをエントリーポイントとなるようにコードを変更。
  8. MainWindow.xibの設定。

main.mm

#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

AppDelegate.h

@class RootViewController;
@interface AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
RootViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;
@end

AppDelegate.m

#import "AppDelegate.h"
#import "RootViewController.h"

@implementation AppDelegate
@synthesize window;
@synthesize viewController;

#pragma mark -
#pragma mark Application lifecycle

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {

// Override point for customization after app launch.

// Set the view controller as the window's root view controller and display.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
- (void)applicationWillTerminate:(UIApplication *)application {
}

#pragma mark -
#pragma mark Memory management
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
}

- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end

RootViewController.h

#import <UIKit/UIKit.h>
#import "ofxUIViewController.h"
@interface RootViewController : ofxUIViewController
{
}
@end

RootViewController.mm

#import "RootViewController"
#include "ofMain.h"
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];

// Do any additional setup after loading the view from its nib.
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation
(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (void)draw
{
ofBackground(255, 255, 0);
ofSetColor(255);
ofRect(0, 0, 100, 100);
ofRect(100, 100, 100, 100);
}
@end