moving text from bottom to top like marquee style in iOS application using textView

749 Views Asked by At

Moving text like marquee style from bottom to top in iOS application. i have tried this long time using google search but i could not get perfect answer for this question please provide any code for this question. i an new to iOS application.

4

There are 4 best solutions below

1
Rajesh On BEST ANSWER

Try this

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

NSTimer *timer;
UILabel *label ;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    timer =[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(scrollText:) userInfo:nil repeats:YES];
    label = [[UILabel alloc] initWithFrame:CGRectMake(20, 50, 250, 20)];

    label.text =@"This is a string to be scroll";
    [self.view addSubview:label];

}

-(void)scrollText:(id)parameter{
    if (label.frame.origin.y <= 50) {
        [label setFrame:CGRectMake(label.frame.origin.x, 400, label.frame.size.width, label.frame.size.height)];
    }
    else
    [label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y-5, label.frame.size.width, label.frame.size.height)];
}

@end
0
Gyanendra Singh On

You can find the same implementation in the below link. It's really awesome place for COCOA CONTROL.

COCOA CONTROLS

1
jayraj m.g. On

Check this answer.

.h

NSTimer *timer; 

float timeDuration;

.m

-(void)viewDidLoad  {

 [super viewDidLoad];
 timeDuration=1.0f; 
 timer = [NSTimer scheduledTimerWithTimeInterval:timeDuration   target:self selector:@selector(marqueeAnimation) userInfo:nil repeats:YES]; 
}

-(void)marqueeAnimation{

 UIImageView *imgView=[[UIImageView alloc]initWithFrame:CGRectMake(100, -100, 100, 100)];
 [imgView setImage:[UIImage imageNamed:@"root.PNG"]];
 [self.view addSubview:imgView];

 NSString *keyPath = @"transform.translation.y";

 CAKeyframeAnimation *translation = [CAKeyframeAnimation animationWithKeyPath:keyPath];

 translation.duration = timeDuration;
 translation.autoreverses = NO;
 NSMutableArray *values = [[NSMutableArray alloc] init];
 [values addObject:[NSNumber numberWithFloat:0.0f]];
 CGFloat height = [[UIScreen mainScreen] applicationFrame].size.height;
 [values addObject:[NSNumber numberWithFloat:height]];
 translation.values = values;

 NSMutableArray *timingFunctions = [[NSMutableArray alloc] init];
 [timingFunctions addObject:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
 translation.timingFunctions = timingFunctions;

 [imgView.layer addAnimation:translation forKey:keyPath]; 

 }
1
z22 On

Try this. This works. Try this in a sample app and then include it in your app.

#import "ViewController.h"

@interface ViewController ()
@property(nonatomic, retain) NSTimer *timer;
@end

@implementation ViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [_txtView setText:@"hi..."];
    _timer = [NSTimer scheduledTimerWithTimeInterval:0.01f target:self selector:@selector(marqueeScroll) userInfo:nil repeats:YES];
}

-(void) marqueeScroll
{
    [_txtView setFrame:CGRectMake(_txtView.frame.origin.x, _txtView.frame.origin.y-1.0, _txtView.frame.size.width, _txtView.frame.size.height)];
    CGRect screen = [[UIScreen mainScreen] bounds];

    if(_txtView.frame.origin.y <= 0 )
    {
        [_txtView setFrame:CGRectMake(_txtView.frame.origin.x, screen.size.height,_txtView.frame.size.width, _txtView.frame.size.height)] ;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Let me know if there are any errors.