走马灯效果实现原理,就是利用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];
    
}

iPhone走马灯控件实现相关推荐

  1. Android 基础 View 系列之 仿IPhone 开关控件

    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 自定义View 是Android中常用的方法之一,本章实现类似于IPhone 开关控 ...

  2. android 仿iphone滚轮,android仿iphone滚轮控件显示效果

    android仿iphone滚轮控件显示效果,供大家参考,具体内容如下 在论坛里看到的,自己弄个效果: 这个滚动的WheelView /* * Android Wheel Control. * htt ...

  3. Android编程之仿iPhone滚轮控件

    网上看到有人写了一个滚动组件,这个不错,大家可以看看 但是,我个人觉得这里有一处不是很好,大家可以试试:不循环的情况下,如果就是最后一个选项,你把它移到最上或者最下的位置,它回滚回到选择条时,是直接跳 ...

  4. iPhone像素点和常用控件尺寸

    iPhone像素点和常用控件尺寸 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/8565872 1.    iPhone ...

  5. 封装自己的控件库:iPhone静态库的应用

    由于iPhone控件的极度匮乏和自定义组件在重用上的限制,在过去的项目中我们积累了大量的"纯代码"组件--因为IB本身的限制,我们无法把这些组件封装为IB组件库(本来我们想通过分发 ...

  6. Iphone控件大全

    Iphone的常用控件有哪些?看看下面 一 视图UIView和UIWindow iphone视图的规则是:一个窗口,多个视图.UIWindow相当于电视机,UIViews相当于演员. 1.显示数据的视 ...

  7. iPhone iPad 各种控件默认高度

    iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iPhone说明. 以下是常见的几种控件的高度.Statusbar,Navigationbar和Tabbar的宽度极其图标大小. ...

  8. 自己定义控件-仿iphone之ToggleButtonamp;VoiceSeekBar

    由于项目中须要使用开关切换button,和声音滑动控件,可是原生Android5.0版本号以下的控件实在是太挫了.尽管网上已经有非常多关于这两个控件的blog.可是我实在是找不到像iPhone这样简洁 ...

  9. Iphone开发(七)date picker 和 picker view,较复杂的控件

    holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details ...

最新文章

  1. 据说,这是生物科研狗的真实经历……
  2. (一)Shiro笔记——简介、 架构分析
  3. linux学习比较好的网站,推荐一个好的在线学习Linux/Unix的好网站
  4. C++命名空间namespace
  5. 利用 Arthas 精准定位 Java 应用 CPU 负载过高问题
  6. pythondict初始化_利用defaultdict对字典进行全局初始化。
  7. 关于Java成员变量、局部变量、方法,在JVM的内存空间分配
  8. php返回类中方法,php如何获取类中所有的方法名
  9. 深度学习中图像预处理均值
  10. c语言入门数据类型详解,C语言的基本数据类型入门教程
  11. 字符串转换为合法IP地址
  12. 【WEB端移动端】企业官网高保真Axure原型模板
  13. 程序员如何利写代码用抖音帮助自己增加额外收入?
  14. 数据结构及算法之异或
  15. 如何在线翻译PDF文件
  16. 光电玻璃LED透明屏是黑科技?揭秘玻璃LED透明屏原理
  17. 应用软件 故障隔离_隔离软件工程师生命中的一天
  18. UVA 12627 Erratic Expansion
  19. 马云:等阿里IPO时你就知道我们赚多少了
  20. Spring Security授权_注解设置访问控制

热门文章

  1. PHP 截取中文字符函数
  2. Nginx端口占用问题
  3. MFC窗口颜色的设置
  4. 文件解析漏洞总结-Apache
  5. Windwos中system、System32、SysWOW64区别
  6. apue对java_[apue] 一个快速确定新系统上各类限制值的工具
  7. (五)Vue 面试真题演练
  8. vue获取当前日期和时间并进行格式化
  9. 解决网页中不能复制文字的问题
  10. 工作中的git实际使用