0

我目前正在向按钮添加动画并查看

            @button = UIButton.buttonWithType(UIButtonTypeRoundedRect)
            @button.frame = [[0,0],[50,50]]
            @button.setTitle("Click to move",forState:UIControlStateNormal)
            @button.addTarget(self, action:'animate_button',forControlEvents:UIControlEventTouchUpInside)
            view.addSubview @button 

      def animate_button
            @button.frame = [[0,0],[0,0]]
            UIView.beginAnimations(nil,context:nil)
            UIView.setAnimationDuration(0.05)
            UIView.setAnimationDelay(0.2)
            UIView.setAnimationCurve(UIViewAnimationCurveEaseOut)
            @button.frame = [[280,400],[50,50]]
            UIView.commitAnimations
     end

任何人都可以帮助使用高级动画

4

2 回答 2

3

你看过方糖吗?它非常受欢迎 - 与 BubbleWrap 一起,它是 ruby​​motion 最常用的宝石之一。它拥有越来越多的动画相关方法,并使用新的块语法(就像 Paul.s 提到的那样)

最通用的是UIView.animation { animations_go_here }

UIView.animation {
  my_view.frame = new_frame
  # or apply a transform to a layer
  my_view.layer.transform = CATransform3DMakeScale(2, 2, 1)
}

有关更多变换函数,请参阅核心动画函数参考

但是如果你想做一个“普通”的动画,你可以通过添加一些 UIView 来做很多事情:

my_view.slide :left, 100
my_view.move_to CGPoint.new(10, 20)  # or [10, 20] works, too
my_view.fade_out

这些都采用类似的选项:

my_view.fade_out(duration: 1)  # 1 second fade out
my_view.fade_out(delay: 1)  # 1 second later, fade out

您可以轻松地将它们链接起来:

my_view.slide :left, 120 {
  my_view.fade_out {
    my_view.removeFromSuperview
  }
}

它们可以分组:

UIView.animate {
  my_view.slide :left, 120
  my_view.fade_out
}
于 2013-02-02T18:47:27.683 回答
0

要使用首选的块语法,它看起来像这样

def animate_button
  @button.frame = [[0,0],[0,0]]

  animations = lambda { @button.frame = [[280,400],[50,50]] }
  UIView.animateWithDuration(0.2, delay:0.05, options:UIViewAnimationOptionCurveEaseOut , animations:animations, completion: nil)
end
于 2013-01-31T14:59:27.233 回答