2015-08-21 232 views
0

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

这里的方法

@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)") 
    } 

按钮水龙头,以及其他操作运行,但按键则保持相同的大小。

我使用这个按钮的限制,这里有一个截图显示我使用的是哪些:

enter image description here

可能的问题是约束条件在尺寸变化采取优先权?

+0

尝试删除对齐引导约束。 –

+0

@MarcusAdams同样的交易。没有动画:/ – Cole

回答

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]; 
}) 
+0

我接受了您的建议并更改了前后边缘的约束条件。建议的一个建议是在动画前移动常量设置,然后将'self.view.layoutIfNeeded'移动到动画中。否则,它将改变而没有动画。 – Cole