UILabel动画不正确

出于某种原因,UILabel的文本想要在没有动画的情况下设置其对齐,我无法弄清楚如何使文本与标签的其余部分一起动画。

我现在有以下代码:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(40,200,100,50)]; [label setText:@"Label Name"]; [label setBackgroundColor:[UIColor blueColor]]; [label setFont:[UIFont systemFontOfSize:17.0]]; [label setTextColor:[UIColor blackColor]]; [label setTextAlignment:NSTextAlignmentCenter]; [self.view addSubview:label]; [UIView animateWithDuration:3 animations:^{ [label setFrame:CGRectMake(40,200,200,300)]; }]; 

此代码在按钮的操作方法中调用。 通常,动画将与标签的创建分开进行,但我将其放在相同的方法中进行测试。

出于某种原因,当它运行时,标签会按照预期完美地resize,我可以看到框架resize。 但是,文本在水平轴上将其自身对齐到动画结束时的位置。 但是,在垂直轴上,它可以正常动画。

现在这就是动画的样子:

animate1animate2animate3

出于某种原因,标签的文字在向上和向下移动时保持居中,但它不会保持左右中心,正如我认为的那样。

我看了一遍,无法找到解决方案。 有谁知道UILabels的行为是什么以及周围有什么办法吗?

您可以添加UIView,然后添加UILabel作为其子视图:

  UIView *view = [[UIView alloc] initWithFrame:CGRectMake(40, 20, 100, 50)]; [view setBackgroundColor:[UIColor blueColor]]; [self.view addSubview:view]; UILabel *label = [[UILabel alloc] init]; [label setText:@"Label Name"]; [label setBackgroundColor:[UIColor clearColor]]; [label setFont:[UIFont systemFontOfSize:17.0]]; [label setTextColor:[UIColor blackColor]]; [label setTextAlignment:NSTextAlignmentCenter]; [label sizeToFit]; [label setNumberOfLines:0]; [label setFrame:CGRectOffset(label.frame, (view.frame.size.width - label.frame.size.width)/2, (view.frame.size.height - label.frame.size.height)/2)]; [view addSubview:label]; [UIView animateWithDuration:3 animations:^{ [view setFrame:CGRectMake(40, 20, 200, 300)]; [label setFrame:CGRectMake((view.frame.size.width - label.frame.size.width)/2, (view.frame.size.height - label.frame.size.height)/2, label.frame.size.width, label.frame.size.height)]; } completion:^(BOOL finish){ }];