zoukankan      html  css  js  c++  java
  • iPhone走马灯控件实现

        走马灯效果实现原理,就是利用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(00, w, 40)];
        [titleLabel setBounds:CGRectMake(
    00, 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 
    320.0];
    }

    +(void) showNavTitle:(UIViewController *)controller title:(NSString *)title (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(00, width, 40)];
        [scroll addSubview:titleLabel];
        controller.navigationItem.titleView 
    = scroll;

        [titleLabel release];
        [scroll release];
        
    }
  • 相关阅读:
    Python SocketServer模块
    网络爬虫urllib:request之urlopen
    1.numpy的用法
    21天打造分布式爬虫-简书整站爬取(十)
    21天打造分布式爬虫-下载汽车之家图片(九)
    21天打造分布式爬虫-Crawl类爬取小程序社区(八)
    21天打造分布式爬虫-Spider类爬取糗事百科(七)
    21天打造分布式爬虫-Selenium爬取拉钩职位信息(六)
    21天打造分布式爬虫-多线程下载表情包(五)
    21天打造分布式爬虫-中国天气网和古诗文网实战(四)
  • 原文地址:https://www.cnblogs.com/KiloNet/p/1829155.html
Copyright © 2011-2022 走看看