跑马灯效果的滚动条,一般出现在 ios 应用的底部。用于显示动态变化的信息或内容较长的信息,在个类应用中使用广泛 以下两种可用的跑马灯滚动 MarqueeBar 的实现。
1. 直接在 ViewController 中实现对 UIView 的位置定时移动来实现,以下代码直接加入到 ViewController 中,在 viewWillAppear 中调用 loadView 即可。
- (void)marqueeView
{
}
-
(void)loadView
{
//marqueenbar 背景,位置高度等控制
UIView *viewMarqueeBar = [[[UIView alloc]initWithFrame(0, 347, 320, 20)]autorelease];
[viewMarqueeBar setBackgroundColor:[UIColor darkGrayColor]];// 滚动容器,显示滚动范围
UIView *viewMarqueeContainer = [[[UIView alloc]initWithFrame(320, 3, 360, 14)]autorelease];
[viewMarqueeContainer setBackgroundColor:[UIColor clearColor]];
[viewMarqueeContainer setClipsToBounds];
[viewMarqueeContainer setOpaque];// 内容
UILabel *lblContent = [[[UILabel alloc] initWithFrame(0, 0, 50,14)]autorelease];
[lblContent setText:@"这里是滚动条。。。。。"];
[lblContent setTextColor:[UIColor whiteColor]];
[lblContent setBackgroundColor:[UIColor clearColor]];
[lblContent setFont:[UIFont fontWithName:@"Helvetica" size:12]];
[lblContent setOpaque];self.view= viewMarqueeBar;
self.vMarqueeContainer = viewMarqueeContainer;[self.view addSubview];
[self marqueeView];
}
2. 自行定义滚动条控件,让 view 自己滚动起来,通过不断的相互方法调用实现循环滚动 UIMarqueeBarView.h 定义
/**
*UIMarqueeBarView.h
*/
@interface UIMarqueeBarView : UIView
{
}
- (void)start;
- (void)stop;
@end
UIMarqueeBarView.m 实现
/**
*UIMarqueeBarView.m
*/
#import "UIMarqueeBarView.h"
@implementation UIMarqueeBarView
-
(void)dealloc
{
[super dealloc];
} -
(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame];
if (self) {
// Initialization code
[self setupView];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
if( (self = [super initWithCoder]) ) {
// Initialization code
[self setupView];
}
return self;
}
-
(void)setupView
{
[self setBackgroundColor:[UIColor lightGrayColor]];
[self setClipsToBounds];
[self setOpaque];UILabel *lblContent = [[[UILabel alloc] initWithFrame(0, 0, 150 ,16)]autorelease];
[lblContent setText:@"这里是滚动条。。。。。"];
[lblContent setTextColor:[UIColor whiteColor]];
[lblContent setBackgroundColor:[UIColor clearColor]];
[lblContent setFont:[UIFont fontWithName:@"Helvetica" size:14]];
[lblContent setNumberOfLines:1];
[lblContent setOpaque];[self addSubview];
} -
(void)start
{
if (self.viewContainer == NULL) {
[self setupView];
}[self startAnimation];
} -
(void)stop
{
}
-(void)startAnimation
{
[UIView beginAnimations:@"MarqueeBarAniamation" context];
[UIView setAnimationCurve];
[UIView setAnimationDuration:25];
[UIView setAnimationDelegate];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
}
-(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
{
CGRect viewFrame = self.viewContainer.frame;
viewFrame.origin.x = 320;
[self.viewContainer setFrame];
[self startAnimation];
}