繁体   English   中英

iOS UIView动画

[英]IOS UIView animation

- (void)showLabelAnimation
{
[UIView beginAnimations:@"animationID" context:nil];

[UIView setAnimationDuration:1];

//original rectangle is (0,0,100,50)

//and I want to change label to (100,100,200,100)
label.bounds = CGRectMake(100, 100, 200, 100);
label.frame = CGRectMake(100, 100, 200, 100);

[UIView commitAnimations];
}

它运作良好,但我只是想知道为什么必须同时设置标签的边界和框架。 他们似乎是同一回事。 谁能为我解释一下? 提前致谢。

[11月3日编辑]感谢您的帮助,但是当我删除设定线时,它不能很好地工作,标签会立即变大,但会通过动画移动到新位置。 调整大小的动画不会显示。

那是令我惊讶的真实事物。

您只需要设置框架。 边界应自行更新。

编辑以获得更多帮助:标签无法缩放; 更改其框架会更改文本的放置位置,但是文本的大小不会以这种方式缩放。

但是,您可以将UILabel的adjustsFontSizeToFitWidth属性设置为“ yes”,然后在运行动画之前,将字体大小设置为最大,然后再运行它。 随着缩放,字体大小应更改以适合您的需要并达到所需的效果。

框架是相对于视图父级的矩形。 边界是相对于其自身的矩形。

动画应该没有线条

label.bounds = CGRectMake(100, 100, 200, 100);

该代码对我有用

    [UIView animateWithDuration:1
                 animations:^(void) {
                     self.leLabel.frame = CGRectMake(labFrame.origin.x, 
                        labFrame.origin.y + 100.0f, labFrame.size.width + 50.0f, labFrame.size.height);
                 }];

对于您要执行的操作,只应设置框架。 如果我在之前的代码中逐帧更改,我将获得非常奇怪的行为。

因此,我的猜测是您需要同时设置两者的原因是因为您先对bound进行了测试,然后再添加帧以更正bound设置所引入的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM