繁体   English   中英

是可以将导航栏中的uilabel从左向右移动吗?

[英]Is that Possible to move a uilabel in navigationbar from left to right?

在我的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
                }];

我知道您需要marquee效果,将标签中的每个字符移动到右侧。

这是一种方法。

首先在viewDidAppear:设置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)]];
}

PS:我没有在导航标题上看到这样的选框效果。 我已经看过一些流行的应用程序,如果标签足够长,不适合导航标题,那么他们保持原样...最后。 我不是说你应该这样做但只是想告诉你。

编辑:从右到左:

- (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]];
}

如果你的意思是将UILabel移动到一个点并再次移回,为什么不使用完成来调用另一个动画呢?

暂无
暂无

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

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