以下代码是我在UIViewController中创建的方法,用于在控制器自己的视图之上弹出/关闭“reader”覆盖。目的是让读者在特定点开始透明,大小为零。然后,“Popup”被动画化为不透明度和大小的增加,并且朝向应用帧中心位置移动。 “Popdown”随后被反复动画,在向指定位置移动时缩小,渐渐消失。
弹出代码完全符合要求。但是,popdown版本(即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];
}
我已经尝试过动画帧,而不是边界和中心,但结果是相同的。
有谁知道为什么会这样,以及我如何克服这个问题?
非常感谢你的时间。
答案 0 :(得分:2)
来自文档:
UIViewAnimationOptionTransitionNone - 用于指定不应发生转换的选项。
尝试下列之一:
UIViewAnimationOptionTransitionFlipFromLeft
UIViewAnimationOptionTransitionFlipFromRight
UIViewAnimationOptionTransitionCurlUp
UIViewAnimationOptionTransitionCurlDown
修改强>: 或者,如果您只想设置这些值的动画,请尝试
[UIView animateWithDuration:(NSTimeInterval)duration
animations:(void (^)(void))animations
completion:(void (^)(BOOL finished))completion];