ankur kumawat ankur kumawat - 2 months ago 18
Objective-C Question

How to slide label text and image same time

I have created slider in my app, I want to image and label both are slide same time.

This time image slider working proper but label slider do not work. i want a label text slide how to work. please help. Thank you

My code



- (void)viewDidLoad {
[super viewDidLoad];

NSURLRequest *req=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://edutimeapp.com/toshow/chamber-of-commerc/ws/fetch_event.php"]];
response =[[NSMutableData alloc]init];
[NSURLConnection connectionWithRequest:req delegate:self];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[response appendData:data];
NSLog(@"error receving data %@",response);
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{

}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;

NSLog(@"Error in receiving data %@",error);
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
NSLog(@"response data %@",json);

NSArray *results = [json objectForKey:@"status"];
img_ary =[[results valueForKey:@"slider"]valueForKey:@"imageurl"];
NSLog(@"images fetch %@",img_ary);

des_ary =[[results valueForKey:@"slider"]valueForKey:@"title"];
NSLog(@"label text %@",des_ary);

for (NSString *line in des_ary) {
NSLog(@"%@", line);

self.label.text=line;

}

NSMutableArray *arrayImages = [[NSMutableArray alloc] init];

for (NSString *strImageUrl in img_ary) {
[arrayImages addObject:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:strImageUrl]]]];
}

self.img.animationImages = arrayImages;
_img.animationDuration=10;
_img.animationRepeatCount = 0;
[_img startAnimating];
}


Label slider code



NSMutableArray *arraylabel = [[NSMutableArray alloc] init];

for (NSString *line in des_ary) {
NSLog(@"%@", line);
[arraylabel addObject:line];
self.label.text=arraylabel;
[self.label sizeToFit];
self.label.center = self.view.center;
self.label.textAlignment = NSTextAlignmentLeft;

[UIView animateWithDuration:0.5
animations:^{
CGRect frame = self.label.frame;
frame.origin.x = 10;
self.label.frame = frame;
} completion:nil];


}

Answer

Make globalCounter as global variable, make sure test data you get

globalCounter=0;
if(nameArray.count>0){

    [self changeLable];

}

then

-(void)changeLable{

    if(!(globalCounter<nameArray.count)){
        return;
    }


    NSLog(@"globalCounter %d",globalCounter);

    [UIView animateWithDuration:1
                          delay:0.5
                        options: UIViewAnimationOptionTransitionCrossDissolve
                     animations:^{


                     }
                     completion:^(BOOL finished) {

                         [lblTitle setText:[nameArray objectAtIndex:globalCounter]];
                         globalCounter++;

                         [self performSelector:@selector(changeLable) withObject:nil afterDelay:1];

                     }];


}
Comments