2010-07-31 249 views
8

在显示文本块的应用程序中,当设备转向横向时,字体大小会增加。我不喜欢它如何处理整个动画,然后突然跳到新的尺寸,所以我想在旋转过程中为尺寸变化设置动画。iOS - 在UILabel或UITextView中动画改变文字大小?

我在某个地方看到,在UIView动画块中抛出此更改不起作用,因为font属性不是可动画的,所以我的选择是什么?

对于我的具体实现,我不是简单地缩放UILabel/UITextView原样;框的边界比字体大小增加(比例),因此文本中会出现回流。那个我能接受。

编辑:我会很好地简单地缩放UITextView

此外,我正在考虑手动设置“动画”:我有一种方法可以展示我的视图并调整字体大小。如果我知道旋转即将开始的时间以及动画的持续时间,我可以对它进行计时,以便在动画中间呈现中间字体或两个中间字体。任何帮助获得这些将不胜感激。

+1

你是否设法实现你想要做的事情?你能接受其中一个答案来解决这个问题吗? – MiKL 2011-03-24 08:27:01

回答

6

如果我知道,当转速为约 启动,并 动画的持续时间...

有趣的你应该提到这一点。在动画开始之前,您的视图控制器将收到willAnimateRotationToInterfaceOrientation:duration:消息,为您提供所需的确切信息。

1

调用didAnimateFirstHalfOfRotationToInterfaceOrientation:时更改字体大小。 这样用户在旋转完成后将不会看到更改。随着旋转的发生,这将很难看到字体大小的变化!

+0

除非启用两步动画,否则该方法不会被调用,这需要额外的手动操作,我真的很想避免进入。无论如何,好主意! – kbanman 2011-03-15 18:12:33

6

一种方法是淡出旧文本,更改字体大小并将其淡入。font属性可能不是动画,但alpha是。由于alpha是UIView的一个属性,所以你可以用同样的方式处理所有的文本轴承视图:UILabel,UITextView等。它看起来也不错。

+0

我喜欢这种方法。 – Moshe 2011-03-20 07:34:39

4

进行可能是一个办法:

  1. 创建CAKeyframeAnimation
  2. 定义要使用一组CATransform3D的对象
  3. 这些转换添加到动画中实现缩放和旋转的关键帧动画
  4. 发送addAnimation消息到您的标签图层对象:[[label layer] addAnimation];

这里是假设yourLabel代码示例是UILabel要缩放和旋转:

CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 

CATransform3D scaleUp = CATransform3DMakeScale(1.5, 1.5, 1); // Scale in x and y 
CATransform3D rotationScaled = CATransform3DRotate (scaleUp, 90, 0, 0, 1); // Rotate the scaled font 

[scale setValues:[NSArray arrayWithObjects: 
[NSValue valueWithCATransform3D:CATransform3DIdentity], 
[NSValue valueWithCATransform3D:rotationScaled], 
nil]]; 

// set the duration 
[scale setDuration: 1.0]; 

// animate your label layer 
[[yourLabel layer] addAnimation:scale forKey:@"scaleText"]; 

这通常是怎样蹦跳着文本将动画的实例。

当设备开始旋转并在旋转完成时检索动画时,您可以开始此操作,以便您可以使用正确的比例/位置更新标签。

您需要进行调整才能找到合适的时间和旋转。

+0

@ kelso。你给了这个想法/尝试? – MiKL 2011-03-17 19:24:22

+0

为了获得正确和正确的时间旋转,您可以使用上述方法:'willAnimateRotationToInterfaceOrientation:duration:' – MiKL 2011-03-22 11:00:06

+0

@ kelso.b。你有没有设法做到你想达到的目的?如何接受其中一个答案,以便您的问题可以关闭?干杯。 Mikl – MiKL 2011-03-23 14:46:40