标签动画移动文本 - iOS

时间:2014-04-25 04:41:16

标签: ios objective-c uilabel uiviewanimation cgaffinetransform

我正在使用此块为我的文本上的脉冲设置动画,当我这样做时,文本会向右移动一些并且向后移动。看起来它是由于某些填充或界面构建器添加的东西。

[UIView animateWithDuration:0.5 animations:^{
    // grow the label up to 130%, using a animation of 1/2s
    myLabel.transform = CGAffineTransformMakeScale(1.3,1.3);
} completion:^(BOOL finished) {
    // When the "grow" animation is completed, go back to size 100% using another animation of 1/2s
    [UIView animateWithDuration:0.5 animations:^{
        myLabel.transform = CGAffineTransformIdentity;
    }];
}];

3 个答案:

答案 0 :(得分:2)

返回途中将anchorPoint减少1.3倍。将您的代码更改为此 -

CGPoint anchorPoint = myLabel.layer.anchorPoint;
[UIView animateWithDuration:0.5 animations:^{
    // grow the label up to 130%, using a animation of 1/2s
    myLabel.transform = CGAffineTransformMakeScale(1.3,1.3);
} completion:^(BOOL finished) {
    // When the "grow" animation is completed, go back to size 100% using another animation of 1/2s
    myLabel.layer.anchorPoint = CGPointMake(anchorPoint.x/1.3, anchorPoint.y/1.3);
    [UIView animateWithDuration:0.5 animations:^{
        myLabel.transform = CGAffineTransformIdentity;
    }];
}];

答案 1 :(得分:0)

我尝试了你的代码。它适用于标签中正确放置文本的标签,或者这些标签具有文本对齐中心。

所以我的建议是,如果你有标签有静态或固定的文字然后给标签的背景颜色,并检查标签文本是否太大,然后这样做,以便文本适合标签。那么你的代码就可以了。

现在,如果您有动态文本,请尝试动态计算标签宽度,如下所示

UIFont *font = [UIFont systemFontOfSize:9.0];
CGSize stringSize;
stringSize = [myLabel.text sizeWithFont:font constrainedToSize:CGSizeMake(1000, myLabel.frame.size.height) lineBreakMode:UILineBreakModeWordWrap];

然后将stringSize.width指定为mylabel width。这意味着您将动态更改标签的宽度。 然后你的代码可以正常工作。

答案 2 :(得分:0)

您应该尝试使用此代码我认为它会对您有所帮助,首先它会将您的图像缩放到130%然后它会将您的图像缩小到原始尺寸

<button id="stop">Stop</button><br>
<canvas id="canvas" width=400 height=100></canvas>