• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - CGAffineTransformScale 和动画未按预期工作

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:07:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在创建一个故事书应用程序,它本质上是一系列短动画。每个“翻页”只是页面缩小的一个简短动画。对于 page1,动画按预期工作,但是,对于 page2,如果我在第一个动画仍在进行时调用操作 page2,它似乎会跳到正确的位置page1 在那个时刻,忽略它自己的持续时间、延迟等。

理想情况下,我希望动画 page2 以自己的缩小方式播放,同样的方式,无论何时调用,我都可以在此代码中进行哪些更改。

-(IBAction) page1
{
    pageImageNext.bounds = CGRectMake(-240, -370, 1200, 800);

    [UIImageView animateWithDuration:7.5 delay:2.0 options: UIViewAnimationOptionOverrideInheritedDuration |
                                                            UIViewAnimationOptionAllowUserInteraction animations:^{
        CGAffineTransform zoom = CGAffineTransformScale(CGAffineTransformIdentity, .4, .4); 
        self.pageImageNext.center = CGPointMake(240,160);
        self.pageImageNext.transform = zoom;

    } completion:^(BOOL finished) {}];
}

-(IBAction) page2
{
    pageImageNext.image = [UIImage imageNamed"page2.jpg"];
    pageImageNext.bounds = CGRectMake(-240, -370, 1200, 800);

    [UIImageView animateWithDuration:7.5 delay:6.0 options: UIViewAnimationOptionOverrideInheritedDuration |
                                                            UIViewAnimationOptionAllowUserInteraction | 
                                                            UIViewAnimationOptionBeginFromCurrentState animations: ^{
        CGAffineTransform zoom2 = CGAffineTransformScale(CGAffineTransformIdentity, .4, .4);    
        self.pageImageNext.center = CGPointMake(240,160);
        self.pageImageNext.transform = zoom2;

    } completion:^(BOOL finished) {}];
}

另外 pageImageNext.bounds = CGRectMake(-240, -370, 1200, 800); 行似乎在 page2,因为它没有调整 UImageView 的大小,而是似乎从之前的转换“继承”了它的当前大小。

谢谢!



Best Answer-推荐答案


我实际上并没有弄清楚上面出了什么问题,尽管我发现通过使用 Core Animation,我确实得到了正确的效果,通过在每个 IBAction 中使用此代码:

pageImageNext.image = [UIImage imageNamed"page1.jpg"];
pageImageNext.bounds = CGRectMake(-240, -470, 1200, 800);

CABasicAnimation *zoomOut = [CABasicAnimation animationWithKeyPath"transform.scale"];
zoomOut.beginTime = CACurrentMediaTime()+4;
zoomOut.toValue = [NSNumber numberWithDouble:0.4];
zoomOut.duration = 8.0;
zoomOut.fillMode=kCAFillModeForwards;
zoomOut.removedOnCompletion=NO;
[pageImageNext.layer addAnimation:zoomOut forKey"zoomOut"];

关于ios - CGAffineTransformScale 和动画未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7458460/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap