hIDDEN bLOG » 2010 » 1月

2010/1/14 木曜日

MonoTouchでCoreLocation

このエントリをはてなブックマークに追加
Filed under: .NET,iPhoneアプリ,MonoTouch — @ 23:08:46

さっそく実機で加速度やロケーションといったセンサーを使えるように...と思ったところでちょこっと引っかかった点があったのでまとめてみた。

というのもこのロケーションAPI、Objective-Cだと、プロトコルであるCLLocationManagerDelegateを使用して値の変更を受け取るのだが、これがMonoTouchにはクラスとして移植してある。
すると、クラスの多重継承を認めない.NETの制約により、適用出来る場面が大幅に制限されてしまう。

対処は簡単で、CLLocationManagerのラッパークラスを作成し、そこからイベントとして位置(と向き)の変更を受け取れるようにした。
ソースダウンロード locationmanager.zip
名前空間なんかは適当にいじって利用ください。

以下、ラッパー使用側のサンプルソース。 (続きを読む…)

2010/1/13 水曜日

ほぼ実物大iPhoneペーパープロトタイピングシート+

このエントリをはてなブックマークに追加
Filed under: iPhoneアプリ — @ 19:51:51

以前こちらの記事で公開した、iPhoneペーパープロトタイピングシート。
これに日本人ならみな大好きな、グリッドを追加したバージョンを作成した。

10ピクセルごとにラインを引いているので、お好みでどうぞ。

ぎっしり版 グリッドつき(PDF)
ゆったり版 グリッドつき(PDF)

ついでに以前公開していたものも。

ぎっしり版(PDF)
iphone_paper_proto.jpg

ゆったり版(PDF)
iphone_paper_proto_yuttari.jpg

MonoTouch買ったお

このエントリをはてなブックマークに追加
Filed under: .NET,iPhoneアプリ,MonoTouch — @ 13:09:58

重度のC#erであるところのボクですが、このたびMonoTouchを大購入に踏み切った次第。
この、C#によりiPhoneアプリが開発できるようになるというステキアイテム、これにより開発スピードを極めて加速し尽くし、ボロ儲けしようという目論見。
ついでにこの円高局面も、$399かーえー40,000円くらいなーという初見に対して36,000円(購入当時)くらいで済んでしまうという若干のお得感を醸すことで追い風となったのは言うまでもない。

手始めに、まずは簡単なHello worldから作ってみた。

MonoDevelopを起動して最初に行うのは、ソリューション・プロジェクトの作成。
ファイル>新規>ソリューションと、実にVisualStudio的なメニューからウィザード表示に移る。
そこでC#>iPhone>iPhone MonoTouch Projectを選択した状態で、ソリューション名等を適宜入力する。
mt01-011.png

もうひとつなにか聞かれるが、これはそのままで「OK」。
mt01-021.png

次いで画面デザインを行ってしまう。
xibファイルをダブルクリックし、Interface Builderを起動する。
mt01-03.png

そう、Interface Builder。
MonoTouchといえど画面レイアウトのデザインにはこれが必要なようだ。しかしXcodeのときには.hファイルと.mファイルを行き来してアウトレットやアクションの記述が必要だったが、MonoTouchではこの手順がずいぶん簡単になっている。
またIBを使わずコード上でレイアウトを記述するにしても、C#のおかげでとても楽になっている。
話はそれてしまったが、画面レイアウトを続けていこう。

今回は、テキストボックス、ボタン、ラベルを配置してみた。
ライブラリウィンドウから、コントロールをドラッグして配置する。
mt01-04.png

配置したコントロールに、それぞれアウトレットを作成する。
このスクリーンショットは「Snow」がつかないLeopardでのもので、Snow Leopard+Xcodeがインストールされている場合、アウトレットの登録箇所がちょっと違うので注意が必要だ。
mt01-05.png
今回はAppDelegateにアウトレットを作成する。
mt01-06.png
AppDelegateを選択した状態で、インスペクタウィンドウの「Class Outlets」ペインにある「+」ボタンをクリックして、アウトレットを3つ追加した。

そして登録したアウトレットとコントロールを紐づける。
mt01-07.png
「MainWindow.xib」ウィンドウ上のAppDelegateを右クリックし、表示された黒いウィンドウにある各アウトレットの○印から、レイアウト上のコントロールへマウスをドラッグする。おなじみのこの操作だ。
これで3つのアウトレット全てを紐づけてしまう。

一度IB上での編集を保存して、MonoDevelopに戻ってみよう。
すると、C#のコードにプロパティが自動生成されている。
簡単、便利、MonoTouch。
mt01-08.png

IBに戻って、今度はボタンのタッチイベントを処理するアクションを記述しよう。
mt01-09.png
インスペクタウィンドウで、今度は「Class Actions」のペインにアクションを追加する。

mt01-10.png
さきほどのアウトレットの紐づけのときとは逆方向で、今度はレイアウト上からAppDelegateへドラッグを行う。
レイアウト上のボタンで右クリックし、紐づけしたいイベント、今回は「Touch Down」の○印からドラッグしてAppDelegateでボタンをドロップ。
mt01-11.png
追加したアクションが1件だけなので、「touchDown」をクリックすると、イベントとアクションが紐づけられた。
mt01-12.png

さてここまでプログラムレスで進めてきた。
最後にちょっとだけコーディング。
ボタンのタッチイベントで、ラベルにテキストを設定する。
NSStringの、えーなんだっけか...とか考えなくてもString.Formatとかイッパツ。
mt01-13.png

AppDelegateクラスの末尾に、下記のメソッドを追加する。
さきほど設定したアクション名が、ここで記述するメソッド名となる。

1
2
3
4
partial void buttonDown( UIButton sender ) 
{ 
    this.messageLabel.Text = String.Format( "Hello {0}.", this.nameText.Text ); 
}

これをコンパイルし、iPhoneシミュレータで実行する。
mt01-14.png

適当な名前を入力しボタンをタッチすると、
mt01-15.png

はいこんにちは。
mt01-16.png

ちなみにこのSDK、現在は体験版も配布されており、ちょっと触ってみることが可能になっている。しかし体験版の制約として、実機への転送はできなくなっている。

HTML convert time: 0.794 sec. Powered by WordPress