注册 登录
主题 : 有人知道UIAlertView的动画效果..怎么做出来的..(已解决)
级别: 新手上路
UID: 919
精华: 0
发帖: 6
可可豆: 312 CB
威望: 312 点
在线时间: 16(时)
注册时间: 2008-09-30
最后登录: 2009-08-06
0 楼:  发表于: 2009-07-07 21:11    发自: Web Page

有人知道UIAlertView的动画效果..怎么做出来的..(已解决)   

如题...alertview的动画效果怎么做出来的...就是先放大..在缩小那中效果....
这个是用AnimationGroup么?..还是一个变大的动画完成再做变小的么?
能有代码更好了..呵呵

付:7楼有多元件的动画效果代码
[ 此帖被m_iori2003在2009-07-17 17:59重新编辑 ]

级别: 新手上路
UID: 919
精华: 0
发帖: 6
可可豆: 312 CB
威望: 312 点
在线时间: 16(时)
注册时间: 2008-09-30
最后登录: 2009-08-06
1 楼:  发表于: 2009-07-08 12:28    发自: Web Page
没有人知道吗?
级别: 新手上路
UID: 919
精华: 0
发帖: 6
可可豆: 312 CB
威望: 312 点
在线时间: 16(时)
注册时间: 2008-09-30
最后登录: 2009-08-06
2 楼:  发表于: 2009-07-08 13:33    发自: Web Page
问题解决..用CAKeyframeAnimation...

    CAKeyframeAnimation * animation;
    animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    animation.duration = 0.5;
    animation.delegate = self;
    animation.removedOnCompletion = YES;
    animation.fillMode = kCAFillModeForwards;
    
    NSMutableArray *values = [NSMutableArray array];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.2, 1.2, 1.0)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 0.9)]];
    [values addObject:[NSValue valueWithCATransform3D:CATransform3DMakeScale(1.0, 1.0, 1.0)]];
    
    animation.values = values;
    animation.timingFunction = kCAMediaTimingFunctionEaseIn;;
    [self.layer addAnimation:animation forKey:nil];
级别: 新手上路
UID: 2949
精华: 1
发帖: 12
可可豆: 591 CB
威望: 591 点
在线时间: 68(时)
注册时间: 2009-03-13
最后登录: 2016-08-31
3 楼:  发表于: 2009-07-09 17:12    发自: Web Page
学习.....(加长补丁)
级别: 骑士

UID: 4967
精华: 1
发帖: 75
可可豆: 4577 CB
威望: 4577 点
在线时间: 519(时)
注册时间: 2009-04-19
最后登录: 2017-04-06
4 楼:  发表于: 2009-07-10 13:44    发自: Web Page
如果需要更好的效果
可以添加 .keyTimes 属性。

PS 请问lz ,fillMode 的具体作用是什么
级别: 新手上路
UID: 919
精华: 0
发帖: 6
可可豆: 312 CB
威望: 312 点
在线时间: 16(时)
注册时间: 2008-09-30
最后登录: 2009-08-06
5 楼:  发表于: 2009-07-13 12:56    发自: Web Page
fillMode主要是决定显示layer在动画完成后的状态..一般和removedOnCompletion一起使用..
如果fillmode是..kCAFillModeRemoved 或..kCAFillModeBackwards...
不管removedOnCompletion是yes还是no,都会回到原始状态..
一般用在重复的动画里..比如图片旋转5圈..你做一圈的功能.然后重复5次..就行了..

kCAFillModeForwards 或 kCAFillModeBoth模式下...
如果..removedOnCompletion 是yes,动画完成后会回到原始状态..
removedOnCompletion是NO的话..动画完成后会保持状态..

保持状态只是保持可见层(presentation)的状态...layer本身的状态不会改变.
比如...layer的frame,在动画完成后不管是否保持状态,frame都不变..完成后得手动设定frame的位置
级别: 骑士

UID: 4967
精华: 1
发帖: 75
可可豆: 4577 CB
威望: 4577 点
在线时间: 519(时)
注册时间: 2009-04-19
最后登录: 2017-04-06
6 楼:  发表于: 2009-07-16 20:42    发自: Web Page
回 5楼(m_iori2003) 的帖子
谢谢这么详细的回答。
我还有个问题:
有个反复动画:进入场景后 元件挨个显示(opacity)
出了场景后 元件挨个消失。

之前用的是在动画完成后修改 view.hidden = YES 来让元件隐藏 (有多个元件,挨个消失)
在模拟器没什么问题,不过在真机调试后发现 动画结束后 到 HIDDEN 有个时间差,就是消失后又显示一下然后消失。
问题大了。不知得怎么解决。

用了LS的方法,消失的时候很完美,不过当再次进入场景后,还是什么都没有。
好像是不能加载动画了。
尝试在加载前使用 [item.layer removeAllAnimations]; 还是没有效果~晕。
级别: 新手上路
UID: 919
精华: 0
发帖: 6
可可豆: 312 CB
威望: 312 点
在线时间: 16(时)
注册时间: 2008-09-30
最后登录: 2009-08-06
7 楼:  发表于: 2009-07-17 17:56    发自: Web Page
ls的..我不知道你怎么设定的..我写了一个sample代码...希望对你有用..
里面有两种动画效果..你可以改变#define UIViewAnimation来选择不同的实现方式..
opacityAnimationTest.zip (591 K) 下载次数:844
级别: 骑士

UID: 4967
精华: 1
发帖: 75
可可豆: 4577 CB
威望: 4577 点
在线时间: 519(时)
注册时间: 2009-04-19
最后登录: 2017-04-06
8 楼:  发表于: 2009-07-17 21:36    发自: Web Page
回 7楼(m_iori2003) 的帖子
原来有延时函数。
我是自己在 AnimationGroup 里面添加了个小HACK, 加了段 opacity === 0  的空动画。

继续测试代码,等出结果了再贴。
级别: 新手上路
UID: 3251
精华: 0
发帖: 1
可可豆: 140 CB
威望: 140 点
在线时间: 74(时)
注册时间: 2009-03-18
最后登录: 2014-01-22
9 楼:  发表于: 2009-07-18 00:00    发自: Web Page
这个问题超级简单 直接去看facebook connect里面的源代码 解决的方法简单而且快捷

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部