ビューに表示され消えるコンポーネント(翻訳移動などのアニメーション付き)を含むUIViewControllerが異なります。 各UIViewControllerのコード量を減らし、XIBファイルで設定できるクラスを1つ用意したいと思います。XIBファイル内のアニメーションを最小限の繰り返しコードで処理するためのベストプラクティス
だから私のXIBファイルが含まれています:
- (以下のスクリーンショットでの「マイビュー」)は、2つの場所の間を移動する必要があるコンポーネントを
- vVisible:表現するための指標のような働きのUIView可視場所
- vHidden:ここで隠れ場所
を表すインジケータのように動作のUIViewそれはXcodeでどのように見えるかである:
そして、私は(ものUIViewControllerである)AppearingControllerを作成します。コンポーネントを表示または非表示にするアニメーションを制御します。私のUIViewControllerで、
-(void) showVisible:(BOOL)visible {
CGRect frameDst = self.vVisible.frame;
if(!self.visible) frameDst = self.vHidden.frame;
CGPoint p = CGPointMake(CGRectGetMidX(frameDst), CGRectGetMidY(frameDst));
self.currentPosition = p;
CABasicAnimation *frameTranslation = [CABasicAnimation animationWithKeyPath:@"position"];
frameTranslation.toValue = [NSValue valueWithCGPoint:p];
frameTranslation.duration = 0.40;
frameTranslation.repeatCount = 1;
frameTranslation.removedOnCompletion = NO;
frameTranslation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
frameTranslation.cumulative = NO;
frameTranslation.additive = NO;
frameTranslation.delegate = self;
[self.v addAnimation:frameTranslation forKey:@"position"];
}
ので:
IBOutlet UIView * vVisible;
IBOutlet UIView * vHidden;
IBOutlet UIView * v;
と公共法(ちょうどそれがvVisibleのRECTとvHiddenビューのRECT間のアニメーションを実行する):それは3つのIBOutletの特性を有していますXIBのAppearingControllerインスタンスに結合するiboutlet /プロパティ:ヘッダファイルで
- :コード、私はほんの数コードが必要です。実装ファイルで
- :それはの作品コンポーネント
そして...を再表示/非表示にするアニメーションを実行するために:私は[FALSE self.appearingController showVisible]を呼び出すことができます。 しかし、私はそれがちょっとねじれて重く感じるので、私はかなり満足していません。理由は次のとおりです。
- AppearingControllerはUIViewControllerです(私はオブジェクトライブラリのオブジェクトまたは外部オブジェクトで管理しませんでした)。
- vVisibleとvHiddenはビューですが、ビューのメソッド/機能は必要ありません。私は位置を示すview.frameが必要です。
このアプローチはあなたにとって良い方法だと思われますか?
どうすれば改善できますか?
同じ目標を達成するために使用するパターンがありますか?
私は興味があります
ありがとうございます。