在iphone中自动滚动选框标签

时间:2012-05-11 13:02:48

标签: iphone objective-c uilabel marquee

我有一个UILabel,我想像HTML中的marquee标签一样滚动,我该怎么做呢?

#define LEFTSCROLLDIRECTION 0
#define RIGHTSCROLLDIRECTION 1

MarqueeLabel *marquee = [[MarqueeLabel alloc] initWithFrame:CGRectMake(10, 10, 300, 30)];
label.scrollDirection = LEFTSCROLLDIRECTION;
[self.view addSubview:marquee];

修改

我发现this这个类似乎起初有效..

但是这里有一个错误..如果我在UINavigationController中向前导航并在一段时间之后弹出pushViewController,则autoScrollLabel会停止动画..

AutoScrollLabel *autoScrollLabel = [[AutoScrollLabel alloc] init];
autoScrollLabel.text = @"Hi Mom!  How are you?  I really ought to write more often.";
autoScrollLabel.textColor = [UIColor yellowColor];

4 个答案:

答案 0 :(得分:3)

查看this开源组件,实际上称为MarqueeLabel。

这使得这很容易。

答案 1 :(得分:2)

在Interface Builder(Main.storyboard文件)中,我添加了一个UIView给他一个位置,

我将对象挂钩在ViewController.h

IBOutlet UIView *marqueeView;

在ViewController.m之后,我写入了viewDidLoad方法:

MarqueeLabel *marqueeLabel = [[MarqueeLabel alloc] initWithFrame:CGRectMake(0, 0, 315, 20) duration:8.0 andFadeLength:10.0f];
marqueeLabel.text = @"marquee text.. this text will scroll";
[marqueeView addSubview:marqueeLabel];

我希望你能有用。

答案 2 :(得分:1)

UILabel是一个UIView。有许多方法可以为UIView设置动画,但使用块可能是您的最佳选择

MarqueeLabel *marquee == ...
[UIView animateWithDuration:5.0 animations:^{ 
    CGRect frame = marquee.frame;
    frame.origin.x = -50.0f
    marquee.frame = frame;
}]:

这将具有在5秒内“滚动”选框到左侧50像素的效果。您需要调整包含视图的大小以及选取框的宽度。

如果您希望左侧的滚动立即显示在右侧,您可以使用第二个选框来实现此目的,该第二个选框将在320处开始其x原点,因为第一个marquees x原点为0。

答案 3 :(得分:1)

非常简单。请尝试以下代码,

    [UIView animateKeyframesWithDuration:5 delay:0 options:UIViewKeyframeAnimationOptionRepeat|UIViewAnimationOptionCurveLinear animations:^{
//_mlabel is my created sample label
        _mlabel.frame=CGRectMake(0-(self.view.frame.size.width), _mlabel.frame.origin.y, _mlabel.frame.size.width, _mlabel.frame.size.height);

    } completion:nil];

希望有所帮助:)