jow*_*wie 1 core-animation transitions uiview ipad
我在iPad应用程序中有一个水平滚动的分页UIScrollView,包含大量页面.在最后一页,我点击屏幕上的一个按钮重置回到第1页.我希望能够交叉解决这个过渡,但它似乎不起作用:
[UIView transitionWithView:self.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
pagingScrollView.contentOffset = CGPointZero;
} completion:^(BOOL finished) {
[self refreshPages];
}];
Run Code Online (Sandbox Code Playgroud)
我读到添加UIViewAnimationOptionAllowAnimatedContent将允许所有内容转换,但它不起作用.相反,屏幕交叉溶解为背景颜色,转换完成后,第一页就会出现.
你不能淡出UIView(滚动条)并同时淡入相同的视图......
你可以使用不同的UIViews ......
你能做的是:
1)fadeOut当前位置的滚动条(到backGround)
2)当滚动条不可见时,将其移动到正确的位置(没有动画)
3)淡出来自backGround的滚动条
就像是:
// START FIRST PART OF ANIMATION
[UIView animateWithDuration:0.5 delay:0.0 options: options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
pagingScrollView.alpha = 0;
} completion:^(BOOL finished) {
// FIRST PART ENDED
// MOVE SCROLLER (no animation)
pagingScrollView.contentOffset = CGPointZero;
// START SECOND PART OF ANIMATION
[UIView animateWithDuration:0.5 delay:0.0 options: options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
// fadeIn - animated
pagingScrollView.alpha = 1;
} completion:^(BOOL finished) {
// ANIMATION ENDED
[self refreshPages];
}];
}];
Run Code Online (Sandbox Code Playgroud)
新编辑:
感谢amadour,他用他的评论教我一些东西,
我希望他能加上他自己的答案,我会投票支持他
无论如何,回答jowie原始问题:
我得到了正确的动画,只是将contentOffset设置移出动画块,并删除UIViewAnimationOptionAllowAnimatedContent(不是真的需要),并将pagingScrollView作为transitionWithView的参数传递
这对我有用:
pagingScrollView.contentOffset = CGPointZero;
[UIView transitionWithView:pagingScrollView duration:3.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
// pagingScrollView.contentOffset = CGPointZero; // move up, outside of animation block
} completion:^(BOOL finished) {
NSLog(@"-->> END amimation");
[self refreshPages];
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |