【iOS解决方案】iPhone走马灯控件实现
来源:互联网 发布:费马的房间 知乎 编辑:程序博客网 时间:2024/05/22 09:39
本文来源:http://www.cnblogs.com/KiloNet/archive/2010/09/17/1829155.html
走马灯效果实现原理,就是利用iPhone自带的动画来控制UILable的y轴位置:
代码如下:
- //LampText.h
- @interface LampText : UILabel {
- float motionWidth;
- }
- @property (nonatomic) float motionWidth;
- @end
- //LampText.m
- #import "LampText.h"
- @implementation LampText
- @synthesize motionWidth;
- - (id)initWithFrame:(CGRect)frame {
- if ((self = [super initWithFrame:frame])) {
- motionWidth = 200;
- }
- return self;
- }
- - (void)drawRect:(CGRect)rect {
- [super drawRect:rect];
- float w = self.frame.size.width;
- if (motionWidth>=w) {
- return;
- }
- CGRect frame = self.frame;
- frame.origin.x = 320;
- self.frame = frame;
- [UIView beginAnimations:@"testAnimation" context:NULL];
- [UIView setAnimationDuration:8.0f * (w<320?320:w) / 320.0 ];
- [UIView setAnimationCurve:UIViewAnimationCurveLinear];
- [UIView setAnimationDelegate:self];
- [UIView setAnimationRepeatAutoreverses:NO];
- [UIView setAnimationRepeatCount: LONG_MAX];
- frame = self.frame;
- frame.origin.x = -w ;
- self.frame = frame;
- [UIView commitAnimations];
- }
- - (void)dealloc {
- [super dealloc];
- }
- @end
- //调用:
- NSString *title = @"Hi,kilonet, weclome to my blog!";
- CGFloat w = [title sizeWithFont:[UIFont fontWithName:@"Arial" size:18]].width;
- LampText *titleLabel = [[LampText alloc]initWithFrame:CGRectMake(0, 0, w, 40)];
- [titleLabel setBounds:CGRectMake(0, 0, w, 40)];
- titleLabel.lineBreakMode = UILineBreakModeClip;
- titleLabel.text = title;
- titleLabel.textAlignment = UITextAlignmentCenter;
- titleLabel.font = [UIFont fontWithName:@"Arial" size:18];
- titleLabel.textColor = [UIColor whiteColor];
- titleLabel.backgroundColor = [UIColor clearColor];
- //[titleLabel sizeToFit];
- [self.view addSubview: titleLabel];
- [titleLabel release];
其它扩展:
在Navigation里实现跑马灯效果,因为Navigation的宽度限制了,所以须使用下面代码调用:
- +(void) showNavTitle:(UIViewController *)controller title:(NSString *)title {
- [Utilitys showNavTitle:controller title:title width:320.0];
- }
- +(void) showNavTitle:(UIViewController *)controller title:(NSString *)title width:(CGFloat) width {
- CGFloat w = [title sizeWithFont:[UIFont fontWithName:@"Arial" size:18]].width;
- CGFloat x = 0;
- if (w <= width) {
- x = (width - w) / 2;
- }
- LampText *titleLabel = [[LampText alloc]initWithFrame:CGRectMake(x, 0, w, 40)];
- titleLabel.motionWidth = width;
- titleLabel.lineBreakMode = UILineBreakModeClip;
- titleLabel.text = title;
- titleLabel.textAlignment = UITextAlignmentCenter;
- titleLabel.font = [UIFont fontWithName:@"Arial" size:18];
- titleLabel.textColor = [UIColor whiteColor];
- titleLabel.backgroundColor = [UIColor clearColor];
- UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, width, 40)];
- [scroll addSubview:titleLabel];
- controller.navigationItem.titleView = scroll;
- [titleLabel release];
- [scroll release];
- }
0 0
- 【iOS解决方案】iPhone走马灯控件实现
- iPhone走马灯控件实现
- [iOS开发技巧之]iPhone走马灯控件实现
- iOS实现走马灯效果
- 自定义控件走马灯套路
- C#实现走马灯状态栏
- 实现走马灯效果
- 走马灯--动画实现
- 走马灯的实现
- Html走马灯效果实现
- TextView实现走马灯效果
- 自定义一直走马灯TextView控件
- 走马灯
- 走马灯
- 走马灯
- 走马灯
- 走马灯
- 走马灯
- Spring MVC的事务配置和Spring4与Hibernate4的整合
- Java语言考核方式的选择
- java简单ping其他Ip是否可以ping通
- VC编程使用HSB(HSV)色彩空间实现色差比较
- ModelAndView解析
- 【iOS解决方案】iPhone走马灯控件实现
- 序列化和反序列化
- 下拉刷新问题记录
- 入门级linux下C++的多文件编译
- Java语言系列课程的设置
- HttpClient3.0入门
- c语言函数参数传递
- 关于查阅资料
- 【iOS学习笔记】UIlabel文字自适应