我有一个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];
答案 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];
希望有所帮助:)