按钮在动画中不改变宽度

Posted

技术标签:

【中文标题】按钮在动画中不改变宽度【英文标题】:Button not changing width in animation 【发布时间】:2015-08-21 15:21:42 【问题描述】:

我有一个按钮,当我按下它时,我想缩小宽度。但是,我目前的方法(以及我在网上随处可见的方法)似乎不起作用。

方法如下

@IBAction func addToOrderPressed(sender: AnyObject) 

        UIView.animateWithDuration(1.0, animations: 
            self.addToOrderButton.frame = CGRectMake(
                    self.addToOrderButton.frame.origin.x,
                    self.addToOrderButton.frame.origin.y,
                    self.addToOrderButton.frame.size.width - 100,
                    self.addToOrderButton.frame.size.height)
        )
        self.addProductToCart(productAtIndex)

        println("[Info] Product Added: \(productAtIndex.title)")
        println("[Info] Cart Count: \(self.dm.cartItems.count)")
    

点击按钮,其他操作运行,但按钮大小保持不变。

我在这个按钮上使用了约束,下面是我正在使用的屏幕截图:

问题可能是约束优先于大小变化吗?

【问题讨论】:

尝试删除对齐前导约束。 @MarcusAdams 同样的交易。没有动画:/ 【参考方案1】:

如果您为按钮使用自动布局,则需要更改宽度约束。首先,您可以为按钮宽度约束创建 IBOutlet NSLayoutConstraint。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *widthConstraint;

[self.view setNeedsUpdateConstraints];
[self.view layoutIfNeeded];
UIView.animateWithDuration(1.0, animations: 
     widthConstraint = widthConstraint - 100
     [self.view layoutIfNeeded];
)

【讨论】:

我听取了您的建议并更改了前缘和后缘的约束。一个建议是在动画之前移动约束设置,然后将self.view.layoutIfNeeded移动到动画中。否则它会在没有动画的情况下改变。

以上是关于按钮在动画中不改变宽度的主要内容,如果未能解决你的问题,请参考以下文章

按钮的宽度在本机反应中没有改变

WPF中的动画——关键帧动画

WPF中的动画——关键帧动画(转)

如何用动画改变按钮的位置

UIView 动画改变按钮的大小

js动画效果代码方法