[iOS开发技巧之]iPhone走马灯控件实现
来源:互联网 发布:矩阵的作用 编辑:程序博客网 时间:2024/06/15 20:20
本文来源: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]; }
- [iOS开发技巧之]iPhone走马灯控件实现
- 【iOS解决方案】iPhone走马灯控件实现
- iPhone走马灯控件实现
- iOS实现走马灯效果
- iOS —— iPhone开发技巧之环境
- iPhone开发之iOS 应用实现数据库文件拷贝
- iOS-iphone开发中的 一些小技巧
- iOS开发:Iphone的常用控件大全
- iPhone开发技巧之网络--- Web服务
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UISegmentedControl
- iPhone开发技巧之私有API--- UITableView
- iPhone开发技巧之私有API--- UIApplication
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之私有API--- UIBarButtonItem
- iPhone开发技巧之日志保存教程
- iPhone开发技巧之私有API
- iPhone开发之NSLog使用技巧
- 线程与消息队列
- 日期类的加减及java中所以日期类的操作算法大全
- 简单工厂模式(有待优化,大家多提建议)
- 学习汇编的重要意义的讨论
- memcpy实现
- [iOS开发技巧之]iPhone走马灯控件实现
- MSHTML Event DispInterfaces(For Hosting or Automation IE)
- HTTP Live Streaming (HLS) 视频直播技术
- iOS 真机调试
- android搭建
- 消息: 'this.get_element().style' 为空或不是对象
- linux comand
- 苹果禁用UDID后续:开发者应尽早放弃UDID
- pure virtual function called--虚函数调用错误