可调整大小的UILabel,可滚动屏幕

时间:2009-01-10 13:15:53

标签: cocoa-touch

是的,我正在尝试获取带有文本的标签(显然已经完成),它会在屏幕上滚动。

输入到标签的文本由UITextField和UIButton完成。这个更新很好。

但是我试图让UILabel根据文本输入的数量调整大小,以便整个屏幕滚动整个屏幕。

这是我目前滚动标签的代码:

[lblMessage setText: txtEnter.text];

CABasicAnimation *scrollText;

scrollText=[CABasicAnimation animationWithKeyPath:@"position.x"];
scrollText.duration = 3.0;
scrollText.repeatCount = 10000;
scrollText.autoreverses = NO;
scrollText.fromValue = [NSNumber numberWithFloat:500];
scrollText.toValue = [NSNumber numberWithFloat:-120.0];

[[lblMessage layer] addAnimation:scrollText forKey:@"scrollTextKey"];

问题是,有时会开始在屏幕中间滚动,有时会在完全消失之前消失。

由于标签是一个尺寸,它也会削减文字。我不知道如何更改它。

提前致谢。

Dom

2 个答案:

答案 0 :(得分:7)

我相信类似the solution for this question的内容适合这种情况。

您可以将UILabel嵌入到UIScrollView中,并将UIScrollView设置为您希望一次显示在屏幕上的标签的最大大小。 UIScrollView需要使用showsHorizo​​ntalScrollIndicator和showsVerticalScrollIndicator属性关闭其滚动指示器。在更改文本时,您可以执行以下操作:

[lblMessage setText: txtEnter.text];
[lblMessage sizeToFit];
scrollView.contentSize = lblMessage.frame.size;

之后是上述链接问题中描述的平移动画代码,其中框架将被平移为UILabel的最右侧。这将导致文本在标签上以恒定速率滚动。如果您希望标签回滚到开头,可以在动画块的开头使用UIView setAnimationRepeatAutoreverses:和setAnimationRepeatCount:方法。

答案 1 :(得分:2)

标签调整大小非常感谢!

现在,我已将标签放入滚动视图中并且我已经显示了...但我现在还不确定要添加的确切动画。我在你给我的链接上尝试了一些,但它们没有用。

编辑:没关系,我现在已经全部工作了。

CGPointMake(x,x)是我对contentOffset所需要的。