|
The sample requires a objective-p compiler (fpc 2.5.1 or higher) with cocoaint packages compiled for iPhone - program project1;
-
- {$mode objfpc}{$H+}
- {$modeswitch objectivec1}
- {$linkframework UIKit}
-
- uses
- iPhoneAll, CGContext, CGGeometry, CFString;
-
- type
- TAppDelegate = objcclass(NSObject)
- procedure applicationDidFinishLaunching(application: UIApplication); message 'applicationDidFinishLaunching:';
- end;
-
- TMyWindow = objcclass(UIWindow)
- public
- procedure drawRect(c: CGRect); override;
- end;
-
- const
- helloworld = 'Hello world';
-
- // window paint method
- procedure TMyWindow.drawRect(c: CGRect);
- var
- cg : CGContextRef;
- begin
- // getting current context
- cg:=UIGraphicsGetCurrentContext;
- // setting back ground color
- CGContextSetRGBFillColor(cg, 0, 0, 0.5, 1);
- CGContextFillRect(cg, c);
-
- // rotating up-side down context
- CGContextTranslateCTM(cg, 0, c.size.height);
- CGContextScaleCTM(cg, 1, -1);
-
- // setting text color
- CGContextSetRGBFillColor(cg, 1, 1, 0, 1);
- CGContextSetRGBStrokeColor(cg, 1, 1, 0, 1);
- // setting font (must set any)
- CGContextSelectFont(cg, 'Helvetica', 30, kCGEncodingMacRoman);
- // rendering text
- CGContextShowTextAtPoint(cg, 0, c.size.height-50, helloworld, length(helloworld));
- end;
-
- var
- mainwindow : TMyWindow;
-
- { TAppDelegate }
-
- procedure TAppDelegate.applicationDidFinishLaunching(application: UIApplication);
- begin
- // application has initialized, now we can create the main window
- mainwindow:=TMyWindow(TMyWindow.alloc);
- // initialize window in Objective-C style
- mainwindow := TMyWindow(mainwindow.initWithFrame (UIScreen.mainScreen.bounds));
- // activate and show the window
- mainwindow.makeKeyAndVisible;
- end;
-
- function NSStr(const s: string): NSString;
- begin
- // converting string to NSString (CFStringRef and NSString are interchangable)
- Result:=NSString( CFStr(PChar(s)));
- end;
-
- var
- pool : NSAutoreleasePool;
- begin
- // initialize foundation memory manger (aka autorelease pool)
- pool := NSAutoreleasePool.alloc.init;
- // launching main application loop
- ExitCode:=UIApplicationMain(argc, argv, nil, NSSTR('TAppDelegate'));
- // according to docs the UIApplicationMain never returns,
- // but still the code present in the Obj-C main.m files
- pool.release;
- end.
复制代码 上面代码编译后的效果:
Written from scratch simple arkanoid game UIKit and GoreGraphics games for iPhone/iPod.:
真的假的?准备开始支持iphone了?期待啊... |
|