忍者ブログ

[PR]

2024年04月29日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Tiny3D 3.2開発中

2010年05月14日
Tiny3DもiPad完全対応にします。ほぼ画面デザインなどの仕様も決定したのでスクリーンショットを掲載します。まずは3D表示画面から。

all_items22_f.pngquestion_f.pngquestion_w.png









今まで同様、フル画面で表示を行います。
オブジェクトの編集はiPadではリストから直接行うことが出来ます。マクロリストからの選択は画面上にリストが表示されます。

53a9f85d.pngeditor_vertices_position.png










PR

Kigen バージョン 2.1 リリース

2010年04月30日
Kigen および Kigen Lite バージョン 2.1 がリリース開始となりました。今まで縦長画面だけしか公開していなかったので、今回は横長の画面でのスクリーンショット(シミュレーター上ですが)を公開します。

edit_kigen_la.pnginput_kigen_la.pnghistory_kigen_la.png







左が項目編集画面、右が更新履歴画面です。左から右の画面に移動する前にしょうゆ味の個数を1個減らしているので、更新履歴画面でのしょうゆ味の総数は8個に減っています。これらの横長画面の方が一覧性は良くiPadの広い画面をより生かせています。

アイコンのユニバーサル化

2010年04月27日
iPhone/iPod touchはアイコンサイズが57×57ですが、iPadは72×72です。そのためアイコンファイルは2個用意する必要があります。ところが現在のiPhone SDK 3.2のテンプレートでは、たとえ新規作成でWindow-based Applicationを選びProductをUniversalにしても、アイコンの設定項目は1個だけです。このままビルドしてもユニバーサルアプリケーションの要件を満たせないため、自分でアイコンのユニバーサル化を行う必要があります。

1.まずはプロジェクト内にある〜Info.plistを開きます。
2.新しくキーを追加します。キーの名前はCFBundleIconFilesです。
3.追加したキーの上でCtrlを押しつつマウスボタンをクリック(2ボタンマウスなら単に右クリック)し、メニューからValue typeのArrayを選びます。
4.中を展開し2個のアイテムを追加します。それぞれの値に用意した57×57と、72×72のアイコン名をセットします。

これでアイコンのユニバーサル化は完了です。これまでの設定であるIcon fileキーは放置でも念のためiPhone/iPod touch用を書いておいても、キー自体を消してしまっても問題は無いようです。

当日追記:
Easy RDS バージョン1.1(ユニバーサル対応版)が承認されましたので、アイコンについてはこの方法で問題ないことが確定しました。ちなみにIcon fileキーには念のためiPhone/iPod touch用のアイコンファイル名を書いてビルドしています。

1つのコードでiPhone/iPod touch/iPadに対応する

2010年04月26日
1つのコードで全てのiPhone OSデバイスをサポートできればソースコードの管理が楽になります。今回の記事はそんな方法を紹介します。今後のことは分かりませんが、現状ではこの分岐方法を使えば全てのデバイスに対応するコードが書けます。まず例としてコードの一部を示します。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

// iPad

UIGraphicsBeginImageContext(CGSizeMake(900.0,675.0));

} else {

// iPhone or iPod touch(iPhone OS バージョン3.2以上)

UIGraphicsBeginImageContext(CGSizeMake(360.0,240.0));

}

#else

// iPhone or iPod touch(iPhone OS バージョン3.2未満)

UIGraphicsBeginImageContext(CGSizeMake(360.0,240.0));

#endif


始めの行のマクロでOSのバージョン判定を行います。iPhone OSのバージョンが3.2以上だと、次にユーザーンターフェースタイプの判定を行います。この2つの判定を組み合わせる事で実行されるデバイスによりアプリケーションの動作を変える事が出来ます。

この他にも[[UIDevice currentDevice] systemVersion]で返ってくる文字列を使って判定する方法もありますが、その方法はお勧めできません。その方法ではiPhone SimulatorでiPhone側の動作確認を行なおうとアクティブSDKを3.1.3などに切り替えた場合、iPad用のコードの中にiPhone SDK 3.2で追加されたメソッドがあると、そんな命令無いぞとビルドエラーが起きてしまうからです。

表示中のTabBarを回転させる

2010年04月26日
KigenをiPad対応にするために問題になったのが、標準のTabBarは表示中に回転しないということでした。でも、実はこの問題には簡単な解決方法があります。それはTabBarControllerのカスタムクラスを作り、それを回転対応にしてしまう事です。このように書くと何だか物凄い事をしているように思ってしまう人もいるかもしれませんが、実際の作業量は少ないです。

1.まずTabBarControllerから派生したクラスを作成します。ここではRotatableTabBarControllerとします。
2.shouldAutorotateToInterfaceOrientation:でTabBarの下部にあるviewControllerにもshouldAutorotateToInterfaceOrientation:メッセージを送信させるようにする。
3.InterfaceBuilderでTabBarControllerのクラスをRotatableTabBarControllerに変更する。

これだけでTabBarが本体の傾きに合わせて回転します。以下にRotatableTabBarControllerのヘッダファイルとメソッドファイルのソースを掲載します。まずヘッダファイルから。

//

//  RotatableTabBarController.h

//

//  Created by Konton on 10/04/21.

//  Copyright 2010 Konton. All rights reserved.

//

 

#import <UIKit/UIKit.h>

 

@interface RotatableTabBarController : UITabBarController {

}

 

@end


特に変更する部分は無いので空みたいなヘッダファイルです。次にメソッドファイルです。

//

//  RotatableTabBarController.m

//

//  Created by Konton on 10/04/21.

//  Copyright 2010 Konton. All rights reserved.

//

 

#import "RotatableTabBarController.h"


 

@implementation RotatableTabBarController

 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

for(UIViewController *controller in self.viewControllers) {

BOOL b;

b = [controller shouldAutorotateToInterfaceOrientation:interfaceOrientation];

}

    return YES;

}

 

@end


メソッドファイルも単純で1つのメソッドが書かれているだけです。たったこれだけのソースで簡単に回転するTabBarになりますが、問題が起きる事もあります。表示の調整を各ViewControllerで行わせる際に、各ViewController自体が持つself.interfaceOrientationの値が正しい値になっていない事があることです。この問題には各ViewControllerにTabBarControllerから送られてきたinterfaceOrientationの値を保存する変数を作っておきshouldAutorotateToInterfaceOrientation:でその値を変更し、レイアウトの変更時にはそちらを参照するようにさせたり、直接RotatableTabBarController側のinterfaceOrientationを参照させることで対処可能です。回転させるとレイアウトが崩れる場合にはこのような対処が必要になります。

2010年4月30日追記:
この方法を使ってiPad上でTabBarを回転させていたKigen 2.1が無事承認されました。TabBarを表示すると画面が回転しないとお困りの方、この方法で回転させても問題はありませんのでご安心ください。

Kigen バージョン2.1 マスターアップ

2010年04月26日
Easy RDSに続き、KigenおよびKigen LiteiPad完全対応となります。iPadは画面が広いのでインターフェース周りを変更しました。項目編集画面と更新履歴画面が3レベル同時表示になっています。縦長画面ではリストが縦3段で表示され、横長画面では横3列に並ぶようにしました。ちなみに下の画像は項目編集画面から期限/個数入力画面に入ったところです。

kigen バージョン2.1

Kigen 2.0.2 マスターアップのお知らせ

2010年04月21日
KigenおよびKigen Liteバージョン2.0.2をアップロードしました。承認がおり次第ダウンロード可能になります。今回のアップデートにより以下のバグが修正されます。

- 期限の入力画面で個数を0にして保存すると、アプリケーションが終了してしまう。

なおこのバグはバージョン2.0および2.0.1で発生し、それ以前のバージョンでは発生しません。

Kigen バージョン2.0.1でも未修整のバグが判明しました

2010年04月20日
Kigen バージョン2.0.1がリリースとなりましたが、iTunes Store(App Store)にバグ報告がありましたので、こちらでも報告内容を掲載します。バグの内容は以下の通りです。

・期限の入力画面で個数を0で保存した場合、アプリケーションが終了してしまう。

これはCore Data対応版(バージョン2.0以降)で発生するバグであり、バージョン2.0.1でも発生します。現在これを修正したバージョン2.0.2を準備中です。

最後にバグ報告をしていただいたredred7様に感謝いたします。