在我的UIViewController
中我使用UILabel
作为xib中的导航标题。但是文字太长了所以我需要一个动画。有些事情就像从左到右移动UILabel
?
这可能吗?
我看到了这段代码,但这是为了将一个点移动到另一个点。
此处UILabel
名称为"标签"
float newX = 90.0f;
float newY = 101.0f;
[UIView transitionWithView:label
duration:0.5f
options:UIViewAnimationCurveEaseInOut
animations:^(void) {
label.center = CGPointMake(newX, newY);
}
completion:^(BOOL finished) {
// Do nothing
}];
答案 0 :(得分:3)
我知道您希望marquee
效果能够将标签中的每个字符移动到右侧。
这是一种方法。
首先在NSTimer
方法中设置viewDidAppear:
,以指定的时间间隔调用方法animateLabel
,如下所示:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.4 target:self selector:@selector(animateLabel:) userInfo:nil repeats:YES];
}
然后定义一个获取标签文本并将其重置为新文本的方法。此方法每0.4秒调用一次,为您提供所需的选框效果。
- (void)animateLabel:(NSTimer *)timer
{
int labelSize = label.text.length;
label.text = [NSString stringWithFormat:@"%c%@", [label.text characterAtIndex:labelSize - 1], [label.text substringWithRange:NSMakeRange(0, labelSize - 1)]];
}
P.S。 :我没有在导航标题上看到这样的选框效果。我已经看过一些流行的应用程序,如果标签足够长以至于不适合导航标题,那么它们最后会保留...
。我不是说你应该这样做但只是想告诉你。
编辑:从右到左:
- (void)animateLabel:(NSTimer *)timer
{
int labelSize = label.text.length;
label.text = [NSString stringWithFormat:@"%@%c", [label.text substringWithRange:NSMakeRange(1, labelSize - 1)], [label.text characterAtIndex:0]];
}
答案 1 :(得分:0)
如果您的意思是将UILabel移动到一个点然后再移回,为什么不使用完成来调用另一个动画呢?