このアプローチは、多くのカスタムビューを持つアプリケーション、ネストされたPNGグラフィックス、およびユーザーとのやりとりに基づいて変化するアニメーションのための良い習慣のように見えますか?私はUIViewの継承のためのUIViewとUIViewControllerの練習
@interface BaseView : UIView {
@protected
BaseViewController *controller;
}
@property (retain) BaseViewController *controller;
@end
及びIビュー
「drawArea」とはCGRect使用される@interface BaseViewController : UIViewController {
@protected
CGRect drawArea;
}
- (void) drawArea:(CGRect) _drawArea;
- (CGRect) drawArea;
- (void) linkSubviewController: (BaseViewController *) _subviewController;
@end
を操作するためのコードを入れています主要位置で対応するコントローラクラスを拡張BaseViewクラスを作成しましたビューとしてフレームとして渡します。次のように
「linkSubviewControllerは」巣にコントローラとビューをことができます:私は「ImageViewの」とUIImageとBaseViewを伸ばすだけでなく、保存する「ImageViewController」と呼ばれる別のカスタムペアを重ねまた
- (void) linkSubviewController: (BaseViewController *) _subviewController {
[self.view addSubview:[_subviewController view]];
}
UIImage *image = [(ImageViewController *)self.controller image];
CGContextDrawImage(...) etc
:X、Y、Iはself.controllerのVARSの任意VARSを変更、または画像を割り当て、たとえばされているかどうかを確認することができるビューの "のdrawRect" 描画方法においてH
、W
私はこの
- (void)loadView {
ImageView *v = [[ImageView new] initWithFrame:drawArea];
v.controller = self;
self.view = v;
}
ような何かベース「initWithFrame」ルーチンが
self.backgroundColor = [UIColor clearColor];
self.opaque = NO;
が含まれているので、私はそれぞれのことを割り当てることなく、透明な背景を持つイメージの多様性をロードすることができloadViewメソッドのメソッドのほとんどを書きます時間。
私はこのコードをアプリケーション全体で使用できました。カスタムアイテムのレイアウトを組み立てるトップレベルのクラスを簡単に作成できるようです。アニメーションの場合、私はそれらをコントローラに入れ、self.view.layerを操作しています。
は基本的に私はフィードバックを探しています、私はObjective-CのとIPhone SDK
[[Class alloc] init]より[Class new]を使用する具体的な理由はありますか?明らかに拡張されたinitWithやその他のもの以外。 – Sneakyness
@Sneakyness + newは徐々に死んでいく大会です。 + alloc-initは、+ new *が+ alloc-initを呼び出す必要があるため、+ alloc-initと比べて柔軟性がありません。+ allocを使用すると、好きな-initまたは-initWith ...メソッドを使用できます。 –
ありがとう! +新しいことは明らかな間違いです、ありがとうございます。私は代表団のアプローチを試してみます。私の主な目標は、ステートフルな情報をコントローラに保存し、コントローラの変更に基づいてビューを再描画させ、アプリケーションクラスがコントローラを実行できるようにすることです。また、計画の一部は、カスタムビューからキャストされた.controllerまでタッチイベントを送信できるようにすることでした。明らかにいくつかのリワークが必要ですが、代表団が助けになると思います。 – Michael