意外に知ってると便利なのでデフォルトシリーズは
ここに書き出していく予定。
ログ出したらこうなった。
UIButtonのデフォルトフォント(xcode上で作成の場合)
font-family: "Helvetica"; font-weight: normal; font-style: normal; font-size: 18px
※xibから作ったUIButtonのデフォルトフォント違うかもしれん
2011年6月16日木曜日
2011年6月1日水曜日
NSDictionaryの高速列挙
allValuesをつけると直接オブジェクトを取り出せるので覚えておくと便利かも。
そのかわりキーわからんけども。
そのかわりキーわからんけども。
-(void)firstEnum:(NSDictionary *)dict{ for(NSString * keyname in dict){ NSLog(@"キーは%@",keyname); } for(id obj in [dict allValues]){ NSLog(@"オブジェクトは%@",obj); } }
2011年5月28日土曜日
例外処理とAutoreleasePool
例外処理内で作ったAutoreleasePoolは@fainallyで解放しなくていいらしい
参考 NSAutoreleasePool祭り
-(NSMutableArray *)testes{ NSMutableArray * returnArr = [NSMutableArray array]; @try{ for(int Cnt= 0;Cnt<100;Cnt++){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init]; //[returnArr addObject:@"なにか"]; NSLog(@"%d番目は%@",Cnt,[returnArr objectAtindex:Cnt]);//←例外発生 [pool release];//ここにはこない } }@catch (NSException * e) { NSLog(@"%@",e); }@finally { //pool解放なし } return returnArr; }…逆に今までfinallyに書いてたからクラッシュしてたのかしらー。
参考 NSAutoreleasePool祭り
2011年4月27日水曜日
キー値監視について
監視元1に対して監視先オブジェクトを複数作れる通知方法。
キーに関連づける値は一個じゃなくてもいいので依存度があまり高くない。
呼び出しメソッドの第2引数には監視先オブジェクトが入る。
第3、4は…よくわかってないです。
登録の解除は忘れずに。
キーに関連づける値は一個じゃなくてもいいので依存度があまり高くない。
呼び出しメソッドの第2引数には監視先オブジェクトが入る。
第3、4は…よくわかってないです。
登録の解除は忘れずに。
/*---------監視するクラス---------*/ //ViewControllerの場合はwillAppearその他はinitでキー監視の宣言 -(void)viewWillAppear:(BOOL)animated{ KansiClass * kansi = [[KansiClass alloc] init]; //キー値監視登録 [kansi addObserver:self forKeyPath:@"keyPath" options:0 context:NULL]; } //監視キーに変更があった場合に呼び出される -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{ if([keyPath isEqualToString:@"keyPath"]){ //値変更したらこのクラスでやりたいことを記述 } } -(void)dealloc{ //登録の解除 [kansi removeObserver:self forKeyPath:@"keyPath"]; [kansi release]; [super dealloc]; } /*---------監視されるクラス内---------*/ -(void)changeKansi{ [self willChangeValueForKey:@"keyPath"]; //監視値の変更 kansiValue = FALSE; [self didChangeValueForKey:@"keyPath"]; }
2011年3月3日木曜日
iPad2のミラーリング機能
iPad2が正式に発表されましたね。
なんとミラーリング機能が追加されたとか。…やっとか;
Apple Digital AVアダプタが必要らしいです。
↓詳しくはこちら↓
あなたの画面を共有しよう!Apple Digital AVアダプタ。
Apple Digital AVアダプタがあっても
iPad2以外はミラーリングできないとか。へえ。
なんとミラーリング機能が追加されたとか。…やっとか;
Apple Digital AVアダプタが必要らしいです。
↓詳しくはこちら↓
あなたの画面を共有しよう!Apple Digital AVアダプタ。
Apple Digital AVアダプタがあっても
iPad2以外はミラーリングできないとか。へえ。
2011年3月1日火曜日
ホームボタン押下でアプリを起動時の状態にリセットする※iOS4.0以降
iOS4.0以降はマルチタスクなのでホームボタン押下では
アプリは一時停止するだけです。次立ち上げた時は前回状態に復帰します。
これをFast App Switchingというらしい。
でもホームボタンを押したら4.0以前のように
アプリを完全終了させたいケースもある訳です。
ログイン系とかテストとかメモリとかメモリとかメモリとか。
それを可能にするのがApplication does not run in backgroundの設定です。
設定方法はプロジェクト名.plistで
Application does not run in backgroundの項目を追加し、
チェックをつけるだけ。
通常は4.0以降の実機やシュミレータにてビルドして実行した際ホームボタン押下で
プロジェクト起動しっぱなしですが、チェックを入れた際にホームボタン押下で
デバッグが終了しましたと、xcode上のステータスに表示されます。
覚えておくと便利かも。
※起動時には戻るとはいえ、アプリ自体はサスペンドにはいます。
サスペンドから復帰させた時に起動画面に戻るだけです。
完全終了でサスペンドからも消す方法はないんじゃないかと。
アプリは一時停止するだけです。次立ち上げた時は前回状態に復帰します。
これをFast App Switchingというらしい。
でもホームボタンを押したら4.0以前のように
アプリを完全終了させたいケースもある訳です。
ログイン系とかテストとかメモリとかメモリとかメモリとか。
それを可能にするのがApplication does not run in backgroundの設定です。
設定方法はプロジェクト名.plistで
Application does not run in backgroundの項目を追加し、
チェックをつけるだけ。
通常は4.0以降の実機やシュミレータにてビルドして実行した際ホームボタン押下で
プロジェクト起動しっぱなしですが、チェックを入れた際にホームボタン押下で
デバッグが終了しましたと、xcode上のステータスに表示されます。
覚えておくと便利かも。
※起動時には戻るとはいえ、アプリ自体はサスペンドにはいます。
サスペンドから復帰させた時に起動画面に戻るだけです。
完全終了でサスペンドからも消す方法はないんじゃないかと。
transformの合成、アニメーション基本(ちょっと修正
だいたいこんな感じ。Viewのtransformは常に上書きされる。
90度回転をtransformに設定した後、拡大を設定すると
90度回転はなかったことになってるので注意。
回転した状態で拡大する場合はCGAffineTransformConcatで
transformを合成して設定する必要がある。
ちなみに
*3/1修正 回転も拡大縮小も中心起点だった;
アフィン変換いまいちわかってないなー。
90度回転をtransformに設定した後、拡大を設定すると
90度回転はなかったことになってるので注意。
回転した状態で拡大する場合はCGAffineTransformConcatで
transformを合成して設定する必要がある。
ちなみに
animeView.transform = CGAffineTransformIdentity;で初期状態にもどる
*3/1修正 回転も拡大縮小も中心起点だった;
アフィン変換いまいちわかってないなー。
-(void)startAnime:(UIView*)animeView{ //開始前に縮小しておく animeView.transform = CGAffineTransformMakeScale(0.1, 0.1); //アニメーション設定開始 [UIView beginAnimations:nil context:NULL]; //アニメーションの秒数 [UIView setAnimationDuration:0.3]; //動きの設定 [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; //delegate設定(endAnimeがいらないならnilでOK) [UIView setAnimationDelegate:self]; //アニメーション終了後にやりたい処理 [UIView setAnimationDidStopSelector:@selector(endAnime)]; //90度回転しながら元の大きさに拡大 CGAffineTransform transform1,transform2; transform1 = CGAffineTransformMakeRotation(M_PI * 90 / 180.0f); /* //ちなみに移動はこれ transform1 = CGAffineTransformTranslate(transform1, 128, 128); */ //拡大 transform2=CGAffineTransformMakeScale(1.0, 1.0); //transformの合成 CGAffineTransform concat = CGAffineTransformConcat(transform1, transform2); //transformの適用 [animeView setTransform:concat]; //アニメーション設定終了 [UIView commitAnimations]; } -(void)endAnime{ //アニメーション終了後にやりたい処理を書く }
登録:
投稿 (Atom)