英语轻松读发新版了,欢迎下载、更新

求助, 关于UIView 动画的问题.

举个栗子 发布于 2014年02月15日 | 更新于 2014年02月15日
无人欣赏。

我的APP 是使用StoryBoard 创建的.

今天在一个UIViewController中 进行了很多subView的动画设置.

都是用滑动/点击 手势控制视图进出

比如我会在storyBoard中将某个子视图的坐标设置为 -100; 先让它不显示在界面中, 之后通过手势让它动画到屏幕中间.

创建动画使用的是这样的代码:

if (sender.state == UIGestureRecognizerStateBegan) {

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.8];

    CGRect frame = self.reminderLabel.frame;
    frame.origin.x = 320;
    self.reminderLabel.frame = frame;
    self.reminderLabel.alpha = 0;

    CGRect frame1 = self.centerLabel.frame;
    frame1.origin.x = 99;
    self.centerLabel.frame = frame1;
    self.centerLabel.alpha = 1.0;

    [UIView commitAnimations];
}

就是更改两个视图的X坐标. 刚开始几个视图添加后效果很正常. 每次触发手势 动画也跟着动..后来我写了些与动画无关的功能, 突然在运行的时候发现其中某个动画功能无效了, 这个动画在一瞬间执行了我覆盖的X坐标,后又瞬间回到原位. 比如这个视图默认的X坐标为-110 (不显示在屏幕上), 我在手势里触发的方法里设置它坐标为99 (屏幕中间), 动画时间0.8秒, 动画的过程是视图瞬间到达坐标99 又回到了-110; 可我并没有在动画或者其他任何地方将它的坐标又设置成-110, 我试了很多方法, 调整动画代码的位置, 试着使用Block创建动画, 问题依旧, 后来我又添加的一个新的View . 双击屏幕它会从X坐标 320 (屏幕右侧) 移到屏幕中间, 它也有这样的问题.
动画执行了, 跑到了屏幕中间我设置的坐标, 但它自己又回到了storyboard里面设置的坐标.. 我想是不是添加的动画太多了??

因为这个动画异常并不是随机出现的, 而是固定的某个视图异常, 其他都正常

共3条回复
tinyfool 回复于 2014年02月15日

@sycx 老师上

sycx 回复于 2014年02月15日

信息不够呢...

你有用AutoLayout吗?

打Log看看你的动画代码是不是短时间内多次运行了

举个栗子 回复于 2014年02月15日

2楼 @sycx AutoLayout 就是默认开始的状态,

一直没解决我已经绕过这步了.

因为我只要不在动画中移动那两个出问题的子时图的坐标

只调节下透明度动画就能顺利执行. 干脆我就先这样吧.

有时间我再回头NSLog 试试.

感谢回答, 辛苦!!

登录 或者 注册