UIView 动画改变按钮的大小

Posted

技术标签:

【中文标题】UIView 动画改变按钮的大小【英文标题】:UIView animation change size of button 【发布时间】:2011-08-04 10:33:22 【问题描述】:

我开始尝试从应用商店重新创建购买按钮,该按钮需要两次点击才能购买。我为按钮展开动画。到目前为止我有这个

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

sender.autoresizesSubviews = NO;
sender.clipsToBounds = NO;
sender.frame = CGRectMake(63,326,200,37);

[UIView commitAnimations];

这只是导致按钮变大,它根本没有动画。我做错了什么还是有其他人实现了这种类型的按钮行为?

编辑:

- (IBAction) buyButtonAction: (UIButton *) sender 

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.5];
[UIView setAnimationDelay:0.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

sender.clipsToBounds = NO;

sender.frame = CGRectMake( CGRectGetMinX( sender.frame) - 30, CGRectGetMinY(sender.frame), 200, 37);
[sender setTitle:@"Touched Touched Touched" forState:UIControlStateNormal];


[UIView commitAnimations];

【问题讨论】:

【参考方案1】:

您的目标是不支持 Blocks 的 ios 吗?

我已经使用以下简单得令人作呕的代码实现了“按钮动画触摸”。

[UIView animateWithDuration:0.5 animations:^
    self.navigationItem.rightBarButtonItem.title = @"Quoting...";
];

或者,如果您不支持块(如果您走这条路线,它还包括注释掉的块),则此代码似乎也可以为触摸按钮设置动画:

-(IBAction) clicked:(UIButton*)sender
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelay:0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    //[UIView animateWithDuration:2.5 animations:^

    sender.autoresizesSubviews = NO;
    sender.clipsToBounds = NO;
    sender.frame = CGRectMake(63,326,200,37);

    //sender.frame = CGRectMake( CGRectGetMinX( self.theButton.frame) - 100, CGRectGetMinY(self.theButton.frame), 300, 40);
    //[sender setTitle:@"Touched Touched Touched" forState:UIControlStateNormal];
//];

【讨论】:

我想我一定是做错了什么。我使用了你提供的更长的 sn-p,现在大小立即改变,然后唯一的动画就是移动按钮的位置?!?!我对原始帖子进行了编辑,以向您展示代码所在的位置。 我将您的属性更改放入我的示例代码中,去掉了 setTitle,因为我认为该部分的动画效果不正确。我为我的代码输入了一个位置 - 30 作为按钮的 X 坐标。我将编辑我的代码以使用您的动画,也许这会提供有用的结果。 太棒了,谢谢。不知道最初出了什么问题,但现在已经解决了,谢谢。

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

使用自动调整子视图大小为 UIView 帧大小更改动画

按钮在动画中不改变宽度

UIView 迅速改变它的位置

动画 UIView 大小跳跃

动画 UIView 框架不尊重约束?

为啥UIView动画会改变View frame?