delegateやらprotocolやらどっちに宣言するんだがごっちゃになるので図にしてみた。
たぶんこれであってる…はず。
2010年12月24日金曜日
2010年12月21日火曜日
UIViewからUIImageを生成
//UIViewからUIImage作成
追記:生成される画像はautoreleaseが走る…らしい。
多分大丈夫?
- (UIImage *)createImage:(UIView *)view { UIImage *createImage; UIGraphicsBeginImageContext(view.frame.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; createImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return createImage; }生成したUIImageがキャッシュに残るかは調べ中
追記:生成される画像はautoreleaseが走る…らしい。
多分大丈夫?
2010年12月17日金曜日
ipadアプリの外部出力(ミラーリング)
フリーで素敵なソースがありました。
iPadの画面を外部モニタへ出力する「TVOutManager」
中を見たけど難しい…じっくり解析します。
何となく仕組みがわかったので追記;
使い方は
1.TVOutManagerクラスを使いたいプロジェクトに入れる
2.初期表示するビューコンにTVOutManager.hをインポート
3.切り替えスイッチを用意してオンで
[[TVOutManager sharedInstance] startTVOut];
オフで、
[[TVOutManager sharedInstance] stopTVOut];
を実行する
※確認にはiPad専用のVGAアダプタと外部出力モニタが必要
>iPad自体にミラーリング機能はない…不便だ
>TVOutManagerは実機で表示しているスクリーンを画像化して、
外部出力に貼付ける作業を別スレッドで定期的に行う
ことでミラーリングしているようにみせているっぽい
>どうやらスクロールなど他の処理が走っている際には
画像の更新を行わない。スクロールはかくかく表示になる
>viewdidloadにスタートメソッドを入れてもなぜかうまく
動作しない。明示的にボタンなどでスタートさせないとうまく行かなかった。
viewdidloadにタイマー仕込んでも駄目だった。
>実機の回転対応はするが、やたらと回転する。修正が必要?
(初期画面がlandscapeだと縦に表示されてしまうなどの問題も)
>外部と実機2つのwindowに同じインスタンスを乗せることができない…?
これができたらわざわざ画像化なんてしないか…。
わーJailbreakしてしまいたいー。
*外部出力で参考になった記事*
[iPad] 外部ディスプレイに出力する
[iPad] 外部出力方法
iPadからVGA出力
iPadでの外部モニタ出力←Jailbreakの方法も
iPadの画面を外部モニタへ出力する「TVOutManager」
中を見たけど難しい…じっくり解析します。
何となく仕組みがわかったので追記;
使い方は
1.TVOutManagerクラスを使いたいプロジェクトに入れる
2.初期表示するビューコンにTVOutManager.hをインポート
3.切り替えスイッチを用意してオンで
[[TVOutManager sharedInstance] startTVOut];
オフで、
[[TVOutManager sharedInstance] stopTVOut];
を実行する
※確認にはiPad専用のVGAアダプタと外部出力モニタが必要
>iPad自体にミラーリング機能はない…不便だ
>TVOutManagerは実機で表示しているスクリーンを画像化して、
外部出力に貼付ける作業を別スレッドで定期的に行う
ことでミラーリングしているようにみせているっぽい
>どうやらスクロールなど他の処理が走っている際には
画像の更新を行わない。スクロールはかくかく表示になる
>viewdidloadにスタートメソッドを入れてもなぜかうまく
動作しない。明示的にボタンなどでスタートさせないとうまく行かなかった。
viewdidloadにタイマー仕込んでも駄目だった。
>実機の回転対応はするが、やたらと回転する。修正が必要?
(初期画面がlandscapeだと縦に表示されてしまうなどの問題も)
>外部と実機2つのwindowに同じインスタンスを乗せることができない…?
これができたらわざわざ画像化なんてしないか…。
わーJailbreakしてしまいたいー。
*外部出力で参考になった記事*
[iPad] 外部ディスプレイに出力する
[iPad] 外部出力方法
iPadからVGA出力
iPadでの外部モニタ出力←Jailbreakの方法も
2010年11月29日月曜日
SQLiteのDBにUIImageを格納する
UIImage→NSDateに変換後、DBに突っ込むらしい。
そもそもバイナリデータを突っ込めることを知らなかった…。
*参考記事*
iPhone SDK でUIImageの画像をSQLiteのDBに格納する方法
iPhoneSDKでSQLiteを使う方法
そもそもバイナリデータを突っ込めることを知らなかった…。
*参考記事*
iPhone SDK でUIImageの画像をSQLiteのDBに格納する方法
iPhoneSDKでSQLiteを使う方法
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]; }
※問題点
ナビゲーションでプロンプト表示した時にツールバーが
乗っていると背景でばれてしまう。
登録:
投稿 (Atom)