UIImage→NSDateに変換後、DBに突っ込むらしい。
そもそもバイナリデータを突っ込めることを知らなかった…。
*参考記事*
iPhone SDK でUIImageの画像をSQLiteのDBに格納する方法
iPhoneSDKでSQLiteを使う方法
2010年11月29日月曜日
2010年11月24日水曜日
initのオーバーライド
TestView*view=[[TestView alloc]init]; TestViewController *VC = [[TestViewController alloc] initWithNibName: @"TestViewController" bundle:[NSBundle mainBundle]];UIView、xib付きUIViewControllerの初期化時にオーバライド(ロード)する場合は
以下をそれぞれのサブクラスに書く。※クラスにオーバロードのメソッド宣言すれば引数を渡す初期化も可能
*UIView
- (id)init { self = [super init]; if (self != nil) { NSLog(@"ここに初期化したい処理を追加する"); } return self; }
*xib付きUIViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { if (self = [super initWithNibName:@"TestViewController" bundle:nibBundleOrNil]) { NSLog(@"ここに初期化したい処理を追加する"); } return self; }*Frame付き
- (id)initWithFrame:(CGRect)frame{ if ((self = [super initWithFrame:frame])) { NSLog(@"ここに初期化したい処理を追加する"); } return self; }
ナビゲーションバーに複数ボタンを配置する
InterfaceBuilderベースの場合は以下の前準備が必要
全部Xcode上でUIを生成してももちろんOK
*IBで下準備*
・カスタマイズしたいナビゲーションバーのあるxibを開く
・追加したいボタンをUIToolbarに乗せたものをview外に作る
※右寄、左寄の両方のボタンをカスタマイズしたい場合はUIToolbarを二つ作る
・UIToolbarの全体の大きさはボタンの数によって横幅を変更する
・作ったツールバーとナビゲーションバーを管理するクラスをIBOutletで繋ぐ
・ボタンのアクションがある場合は同クラスにIBActionを繋ぐ
*X-codeでカスタマイズしたツールバーを乗せる*
UINavigationControllerを管理するクラスのViewdidLoadで以下を呼び出す
※問題点
ナビゲーションでプロンプト表示した時にツールバーが
乗っていると背景でばれてしまう。
全部Xcode上でUIを生成してももちろんOK
*IBで下準備*
・カスタマイズしたいナビゲーションバーのあるxibを開く
・追加したいボタンをUIToolbarに乗せたものをview外に作る
※右寄、左寄の両方のボタンをカスタマイズしたい場合はUIToolbarを二つ作る
・UIToolbarの全体の大きさはボタンの数によって横幅を変更する
・作ったツールバーとナビゲーションバーを管理するクラスをIBOutletで繋ぐ
・ボタンのアクションがある場合は同クラスにIBActionを繋ぐ
*X-codeでカスタマイズしたツールバーを乗せる*
UINavigationControllerを管理するクラスのViewdidLoadで以下を呼び出す
//rightButtonsが右寄のボタンをまとめたUIToolBar //leftButtonsが左寄のボタンをまとめたUIToolBar -(void)createNaviButtons{ //ツールバーの背景色をナビバーと合わせる [rightButtons setTintColor: [self.navigationController.navigationBar tintColor]]; [leftButtons setTintColor: [self.navigationController.navigationBar tintColor]]; //カスタムビューを設定する self.navigationItem.leftBarButtonItem =[[[UIBarButtonItem alloc]initWithCustomView:leftButtons] autorelease]; self.navigationItem.rightBarButtonItem =[[[UIBarButtonItem alloc]initWithCustomView:rightButtons] autorelease]; }
※問題点
ナビゲーションでプロンプト表示した時にツールバーが
乗っていると背景でばれてしまう。
2010年11月11日木曜日
UIButtonの同時押し防止
マルチタップさせたくないボタンなどに
exclusiveTouchのプロパティを設定する
exclusiveTouch
UIViewのプロパティ。YESなら同ウインドウ内の他ビューにおける
タッチイベントを受け付けない。デフォルト:NO
exclusiveTouchのプロパティを設定する
exclusiveTouch
UIViewのプロパティ。YESなら同ウインドウ内の他ビューにおける
タッチイベントを受け付けない。デフォルト:NO
multitapcancelbtn.exclusiveTouch=YES;
2010年11月9日火曜日
UIScrollView 拡大率を変えずにフォーカス
[scrollView zoomToRect:CGRect]でズームフォーカス。
拡大率をかえたくない場合は以下。
*参考記事*
UIScrollViewで任意の位置にスクロール
拡大率をかえたくない場合は以下。
// 現在のスケール float scale = scrollV.zoomScale; // ズームスクロール CGRect rect = CGRectMake(0,0,10,10); [scrollV zoomToRect:rect animated:YES]; // スケールを再指定 [scrollV setZoomScale:scale];
*参考記事*
UIScrollViewで任意の位置にスクロール
性能測定を行うマクロ
hファイルに以下を定義
計測したい箇所に下記を記入。
コンソールにname部分に入れた名前で秒数が表示される。
シミュレータと実機で計測結果は異なるのでなるべく実機で計測する。
*参考記事*
Objective-Cでちょっとした性能測定を行うマクロ
#define BM_START(name) NSDate *name##_start = [NSDate new] #define BM_END(name) NSDate *name##_end = [NSDate new];\ NSLog(@"%s interval: %f", #name, [name##_end timeIntervalSinceDate:name##_start]);\ [name##_start release];[name##_end release]
計測したい箇所に下記を記入。
BM_START(name); /* 計測したい箇所 */ BM_END(name);
コンソールにname部分に入れた名前で秒数が表示される。
シミュレータと実機で計測結果は異なるのでなるべく実機で計測する。
*参考記事*
Objective-Cでちょっとした性能測定を行うマクロ
UIColorの便利な定義
hファイルで以下を定義するとrgbカラー指定が楽になる
使用例
*参考記事*
UIColor Macros
#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1] #define RGBA(r, g, b, a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
使用例
//色のみ testLabel.textColor = RGB(255, 251, 204); //透過も指定 testLabel2.textColor = RGBA(255, 251, 204, 0.5);
*参考記事*
UIColor Macros
typdef enum の使い方
hファイルのimport下に書く
enumを記述したクラスをインポートすれば数字の代わりに使える。
引数などに設定する場合は
typedef enum{ CASE_0=0, CASE_1, CASE_2 } TEST_ENUM;
enumを記述したクラスをインポートすれば数字の代わりに使える。
引数などに設定する場合は
-(void)test:(TEST_ENUM)case;
登録:
投稿 (Atom)