ios – 在父UIView的动画框架(大小)时自动调整UILabel的框架

ios – 在父UIView的动画框架(大小)时自动调整UILabel的框架,第1张

概述我有一个父UIView,其UIView(UILabel在下面的代码中使用),其框架设置为父级的边界,并且其autoresizingMask设置为灵活的宽度和高度: UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];UILabel* childLabel = [[UILabel alloc] 我有一个父UIVIEw,其UIVIEw(UILabel在下面的代码中使用),其框架设置为父级的边界,并且其autoresizingMask设置为灵活的宽度和高度:
UIVIEw* parentVIEw = [[UIVIEw alloc] initWithFrame:CGRectMake(0,320,480)];UILabel* childLabel = [[UILabel alloc] initWithFrame:parentVIEw.bounds];childLabel.autoresizingMask = UIVIEwautoresizingFlexibleWIDth | UIVIEwautoresizingFlexibleHeight;childLabel.textAlignment = UITextAlignmentCenter;childLabel.text = @"Hello";

我想要能够为父视图的框架,特别是其大小设置动画,并将子视图调整为动画的一部分:

[UIVIEw animateWithDuration:1.0 animations:^{ parentVIEw.frame = CGRectMake(0,160,240); }];

作为这个动画的结果,我希望UILabel的文本与父视图的动画一起动画,从视觉上看,文本将从(160,240)中心移动到(80,120).然而,代替动画,子视图的框架将立即被设置为动画结尾应该具有的值,因此当动画开始时,您将看到文本的位置立即跳转.

有没有办法将子视图作为动画的一部分自动调整?

解决方法 我完全不知道发生了什么,但我认为核心问题是UIKit不想在动画的每个帧重新渲染文本,所以UILabel的内容不是动画的.默认情况下,UILabel的contentMode属性是UIVIEwContentModeRedraw,这意味着一旦属性设置,它将重新绘制目标大小的UILabel.

如果将contentMode更改为UIVIEwContentModeCenter,内容将不会重新绘制,并将在UILabel中保持居中.

childLabel.contentMode = UIVIEwContentModeCenter;
总结

以上是内存溢出为你收集整理的ios – 在父UIView的动画框架(大小)时自动调整UILabel的框架全部内容,希望文章能够帮你解决ios – 在父UIView的动画框架(大小)时自动调整UILabel的框架所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1111310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存