0

我正在制作一个 UIButton 动画,它沿着 x 轴移动,同时从初始大小缩放到原始大小。当我尝试下面的代码时,它并没有移动到它应该去的地方,也没有放大到它的原始大小。

这是我初始化按钮的代码:

 _testBtn1.layer.anchorPoint = CGPointMake(0.5f, 0.5f);
scaleBtn = CGAffineTransformMakeScale(0.2, 0.2);
[_testBtn1 setTransform: scaleBtn];

这是我的移动/平移和缩放代码:

CGAffineTransform translate = CGAffineTransformMakeTranslation(50.0f, 0.0f);
CGAffineTransform animate = CGAffineTransformConcat(scaleBtn, translate);
[_testBtn1 setTransform:animate];

任何帮助,建议,意见将不胜感激。我是iOS新手..谢谢!

4

4 回答 4

1

您可以只创建一个自定义类型 UIButton(通过将类型更改为自定义来使用 IB,或者以编程方式使用

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];//set the button's image with 
[aButton setImage:[UIImage imageNamed:@"abc" forState:UIControlStateNormal];

要移动它,只需正常为其位置设置动画...

[UIView animateWithDuration:0.5 animations:^{aButton.center = newCenter;}];

或者

CGRect originalFrame = aButton.frame;
aButton.frame = CGRectMake(originalFrame.origin.x, originalFrame.origin.y, originalFrame.size.width, 0);
[UIView animateWithDuration:0.5 animations:^{aButton.frame = originalFrame;}];

或参考此链接 http://objectiveapple.blogspot.in/2011/10/23-quizapp-16-animate-scale-uibutton.html

于 2013-08-12T09:52:52.440 回答
0

这个用Core Animation应该很容易做到的,看看最基础的一个CABasicAnimation

于 2013-08-12T09:56:02.103 回答
0

我制作了这个动画:

在此处输入图像描述

使用这个可重用的类:

class AnimatedButton: UIButton {
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        addTargets()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        addTargets()
    }
    
    func addTargets() {
        self.addTarget(self, action: #selector(scaleDownAnimated), for: .touchDown)
        self.addTarget(self, action: #selector(scaleBackToNormalAnimated), for: [.touchUpOutside, .touchCancel, .touchUpInside])
    }
    
    @objc func scaleDownAnimated() {
        UIView.animate(withDuration: 0.25, delay: 0, options: .allowUserInteraction) {
            self.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
        } completion: { _ in }
    }
    
    @objc func scaleBackToNormalAnimated() {
        UIView.animate(withDuration: 0.2, delay: 0, options: .allowUserInteraction) {
            self.transform = CGAffineTransform(scaleX: 1, y: 1)
        } completion: { _ in }
    }
}

然后只需AnimatedButton像下面那样制作按钮的类(如果您使用的是故事板)并正常使用按钮:

在此处输入图像描述

于 2020-10-21T11:00:47.617 回答
0

一个简单的缩放(有弹性)动画,带有完成处理程序的快速实现。

希望它会以某种方式帮助您或其他任何人。

viewToanimate.transform = CGAffineTransform(scaleX: 0.1, y: 0.1) UIView.animate(withDuration: 0.7, delay: 0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, animations: { _ in viewToAnimate.transform = .identity }, completion: { _ in //Implement your awesome logic here. })

于 2016-11-28T08:34:09.857 回答