Ios 设置UIButton的动画更改文本更改时的位置

Ios 设置UIButton的动画更改文本更改时的位置,ios,objective-c,layout,uibutton,uianimation,Ios,Objective C,Layout,Uibutton,Uianimation,我在动画后更改按钮文本时遇到问题 在my.h文件中定义 @property (weak, nonatomic) IBOutlet UIButton *btnCheck; 当我想要设置按钮位置更改的动画时,我调用此方法 - (void)updateViews { if(checkedIn){ [UIView animateWithDuration:0.3f delay:0.0f

我在动画后更改按钮文本时遇到问题

在my.h文件中定义

@property (weak, nonatomic) IBOutlet UIButton *btnCheck;
当我想要设置按钮位置更改的动画时,我调用此方法

- (void)updateViews {
    if(checkedIn){
        [UIView animateWithDuration:0.3f
                          delay:0.0f
                        options:UIViewAnimationOptionTransitionNone
                     animations:^{
                         btnClear.hidden = YES;
                         [btnCheck setFrame:CGRectMake(90, btnCheck.frame.origin.y,        btnCheck.frame.size.width, btnCheck.frame.size.height)];
                     }
                     completion:nil];

    }else{
        [UIView animateWithDuration:0.3f
                          delay:0.0f
                        options:UIViewAnimationOptionTransitionNone
                     animations:^{
                         [btnCheck setFrame:CGRectMake(20, btnCheck.frame.origin.y, btnCheck.frame.size.width, btnCheck.frame.size.height)];
                     }
                     completion:^(BOOL finished){
                         btnClear.hidden = NO; 
                     }];
    }
    checkedIn = !checkedIn;
}
这是完美的作品,包括以下图片供参考:

问题是,只要我尝试更改按钮的名称,它就会跳回其原始帧

我用另一种方法更改按钮文本,如下所示

btnCheck.titleLabel.text=@test

一旦我改变了,按钮就会跳回来 是什么导致按钮框复位?
我尝试在动画之前、动画制作期间和动画制作完成时对其进行更改。它会设置动画到新位置并跳回。

您不应该以这种方式更改UIButton的标题。相反,请尝试使用setTitle:forState:method设置它的标题。试试这个,让我知道这是否有用,祝你好运

这可能无法回答您的问题,但当您只想更改帧中的一个属性时,我将向您展示一种更好的方法来更改帧

 CGRect buttonFrame = [btnCheck frame];
 buttonFrame.origin.x = newXOrigin;
 [UIView animateWithDuration:0.3f
                  animations:^{
                    [btnCheck setFrame:buttonFrame]; 
                 }];     

我更喜欢这种方法,因为您不必创建新的CGRect并复制粘贴所有未修改的帧属性。现在,您可能想从动画块中获取隐藏的指定,因为它无法设置动画

是自动布局导致了问题。禁用该选项,并且所有操作都正常运行

它给出了相同的问题,我使用了以下内容:[btnCheck setTitle:@test forState:UIControlStateNormal];那真的很奇怪,我强烈建议你仔细检查你的代码。根据你提供的图片,我不认为你的按钮改变了它的框架,也许你改变了你代码中某个标题标签的文本对齐方式?我已经注释掉了大多数其他非必要的代码,除了框架和文本之外,没有其他变化。在动画完成时,我还添加了帧的打印输出。X Y宽度高度20.000000 20.000000 100.000000 58.000000 90.000000 20.000000 100.000000 58.000000在我更改文本时也会发生。在那之后,它将帧更改到正确的位置,并回复感谢,当时没有想到这一点。看起来简单多了。