[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
アイコンのユニバーサル化
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に対応する
#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
この他にも[[UIDevice currentDevice] systemVersion]で返ってくる文字列を使って判定する方法もありますが、その方法はお勧めできません。その方法ではiPhone SimulatorでiPhone側の動作確認を行なおうとアクティブSDKを3.1.3などに切り替えた場合、iPad用のコードの中にiPhone SDK 3.2で追加されたメソッドがあると、そんな命令無いぞとビルドエラーが起きてしまうからです。
表示中のTabBarを回転させる
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.0.2 マスターアップのお知らせ
- 期限の入力画面で個数を0にして保存すると、アプリケーションが終了してしまう。
なおこのバグはバージョン2.0および2.0.1で発生し、それ以前のバージョンでは発生しません。
Kigen バージョン2.0.1でも未修整のバグが判明しました
・期限の入力画面で個数を0で保存した場合、アプリケーションが終了してしまう。
これはCore Data対応版(バージョン2.0以降)で発生するバグであり、バージョン2.0.1でも発生します。現在これを修正したバージョン2.0.2を準備中です。
最後にバグ報告をしていただいたredred7様に感謝いたします。