次のコードは、コントローラの独自のビューの上に「リーダー」オーバーレイをポップアップ/その意図は、読者が特定の点で透明なサイズゼロから始めることです。 「ポップアップ」は、不透明度とサイズが増加するにつれてアニメーション化され、アプリケーションフレームの中央の位置に移動します。その後、「ポップダウン」は逆にアニメーション化され、特定の場所に向かって移動しながら後退し、フェードアウトします。iOS/Objective-C:transitionWithViewカスタムアニメーションブロックは、期間が過ぎていなくてすぐにビューのサイズを変更します
ポップアップコードは、まったく同じように機能します。しかし、ポップダウンバージョン(すなわち、isPopup == NOの場合に実行されるコード)は、徐々に行うのではなく、直ちに境界を変更する。したがって、ポップダウンアニメーションは、最初から1ピクセルの正方形のビューをその宛先に向かって移動し、フェードアウトすることを示す。
-(void)popupReader:(BOOL)isPopup from:(CGPoint)loc {
CGFloat newAlpha = 0.0f;
CGPoint newCenter = CGPointZero;
CGRect newBounds = CGRectZero;
CGRect appFrame = [UIScreen mainScreen].applicationFrame;
CGSize readerSize = [self viewSize];
if (isPopup) {
newAlpha = 1.0f;
newCenter = CGPointMake(appFrame.origin.x+appFrame.size.width/2,
appFrame.origin.y+appFrame.size.height/2);
newBounds = CGRectMake(0,0,readerSize.width,readerSize.height);
[self.view setAlpha:0.0f];
[self.view setCenter:loc];
[self.view setBounds:CGRectMake(0, 0, 0, 0)];
} else {
newCenter = loc;
newBounds = CGRectMake(0,0,1,1);
}
const CGFloat animDur = 0.3f;
[UIView transitionWithView:self.view
duration:animDur
options:UIViewAnimationOptionTransitionNone|UIViewAnimationOptionCurveEaseOut
animations:^{
self.view.alpha = newAlpha;
self.view.center = newCenter;
self.view.bounds = newBounds;
}
completion:nil];
}
境界線と中心ではなく、フレームだけをアニメーション化しようとしましたが、結果は同じでした。
これはなぜ起こっているのか、誰がこの問題を克服できるのかを知っていますか?
お時間をありがとうございました。ドキュメントから
ありがとうbshirleyを試し、animateWithDurationアプローチはしていません奇妙な問題を十分に修正してください。しかし、トランジションを使用して修正します:)本当にありがとうございました! – KomodoDave