iPhone SDK落としてみた。

| | コメント(4) | トラックバック(0)

遅ればせながら落としてみましたよ。インストール時に空き容量5G必要ですとかいわれてビビりましたが。

まあ当たり前ながらCocoaベース、だから当たり前なんでしょうけどMac+Xcodeが開発環境ですね。てっきりWindowsベースの開発キットも用意するのかと思ってたんですが。

SDKのインストール後、Xcodeを立ち上げるとiPhone向けのプロジェクトが追加されてます。とりあえずCocoa Touch Applicationを選んでプロジェクトを作成。このときまではとりあえずNIB開いて適当にいじってみようかなーと思ってた訳で。

何も読まずに始めたので、ここにきてiPhoneのUIが作成できるIBが、このSDKに含まれてないのに気づきましたよ。ソース見るとアプリケーションのdelegateのapplicationDidFinishLaunchingで明示的にウインドウやらコントロールを作ってますねー。

まあ気を取り直して、とりあえず最初は文字表示しようかと思い、資料やら作成されたソースなりを眺めてみます。UIViewってのがiPhone OSでの基本ビュークラスらしく、プロジェクトにはこれを派生したMyViewクラスがあります。きっとこれの描画用メソッドをオーバーライドしてやればできるはず!、と思ってその手の資料を見ると、あったあった。-drawRectを実装すればいいみたいですな。
UICurrentContext()ってので現在のCoreGraphicsのコンテキストを取得して、こいつにCoreGraphicsのAPIで文字をかいてやれば良さそうです。といってもCocoaはさっぱりなのでいろいろ調べながらなんとなくでっちあげてみましたよ。

CGContextRef context = UICurrentContext();
const char* message = "Hello world";
CGContextShowText(context, message, strlen(message));

位置とか設定してないけど、まあとりあえずは表示されればと思ってコンパイル!
あれ?エラーがでてますねー。

…UICurrentContextが定義されてなくてリンクできないように見えるわけですが?まだ実装されてないのかなorz。どっかには書いてあるのかもしれないけれど、探す気力がちょっと失われていきましたよ。

とそのとき目に入ったのがiPhone OSではUIViewに文字を書くためにNSStringを拡張してあるとの記事!
なんだ、こんな簡単な方法があるんじゃないですかー。さっそくざざっと書いてみましたよ

NSString* sampleText = [NSString stringWithUTF8String:"hello world"];
[sampleText drawAtPoint:CGPointMake(0.0, 0.0) withFont:[UIFont systemFontOfSize:14]];

こんどはコンパイルもちゃんと通って実行できました。実行はiPhoneのエミュレーターで行われる訳ですが、このエミュレータよくできてますねー。連携用に写真もはいってたりと気が利いてます。
…が、実行されるもののさっぱり文字は書かれません。はて?

しばらくいろいろ試した物の解決しません。そこでiPhone DevCenterのページを見てみるとCoding How toというセクションにHow do I draw text?ってそのもののズバリのFAQがあるじゃないですか。

Listing 1: Drawing text. [myText drawAtPoint:CGPointMake(0.0,0.0) withFont:[UIFont systemFontSize]];

そっかー、systemFontOfSize:(CGFloat)fontSize じゃなくてこっちを使えばいいのか!早速修正してコンパイルですよ

…ちょっとsystemFontSizeってUIFont*じゃなくてCGFloat返すクラスメソッドじゃんか!うわーん。

ちなみにイメージは
NSString* imagePath = [NSString stringWithUTF8String:"path/to/image"];
UIImage* image = [UIImage imageWithContentsOfFile:imagePath];
[image drawInRect:rect];
なんてコードで表示されました。ただ位置がおかしい気もしましたけど。

サンプルのHelloWorldClassicをみるとUILabelコントロールを使えば、とりあえずテキストの表示はできるみたいですね。うーんでも普通に描画するにはどうしたらいいのやら。

エロゲーノベルゲームが作れないですよ><

2008/03/11追記
もしかして文字色が黒になっていて書いてるけど見えないんじゃ?と思って適当な画像を表示した後にdrawAtPointで文字を書いてみると…

書けてたー!

うーん、しかし(0,0)に書いたはずなのに文字の位置が左下。iPhone Programming Guideによると(0,0)は左上になるはずなんですけどねー。
Cocoaのデフォルト座標系だと左下が原点でしたっけね?

トラックバック(0)

このブログ記事を参照しているブログ一覧: iPhone SDK落としてみた。

このブログ記事に対するトラックバックURL: http://hogelab.net/mt4/mt-tb.cgi/1704

コメント(4)

KOBA Author Profile Page:

>このときまではとりあえずNIB開いて適当にいじってみようかなーと思ってた訳で。
IB 対応できてないなら Windows 対応もすりゃいいじゃん
って訳にはいかないんだろな

nak :

よくよく考えると、Windows用のXcodeとiPhoneエミュレータが用意できないと難しいでしょうねぇ。XcodeはじゃないにしてもiPhone用のバイナリがはけるgccあたりがないと。

あに Author Profile Page:

IBは正式版で対応するってゆってるからなぁ。
正式版でSafari for WindowsみたいにOne more thingで登場するのかしら。
さすがにそれはないな。ないと思いたい。
Mac側のアドバンテージがなくなっちゃうもんね。

nak :

うーんどうでしょうねぇ。Windows用のSDKも出てきそうな気もします。
ただWindows版Xcodeとかではなくて、VS用のコンパイラプラグインあたりにしてWindowsには最低限の開発環境、Macにはリッチな開発みたいな差別化をはかりそう。

それともWindows用の開発環境は「Third party opportunity」にするかな?

コメントする

このブログ記事について

このページは、nakが2008年3月10日 22:55に書いたブログ記事です。

ひとつ前のブログ記事は「これからは違法もHD画質」です。

次のブログ記事は「あれがAirだ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    
Powered by Movable Type 4.01a