To create marquee effect first set scroll view either via storyboard or via code
Here in this example I am setting up scroll view via code.
declare these variables
- UIScrollView *scrollView;
- NSTimer *timer;
- CGFloat contentOffset;
1. Set up scroll view.
-(void)configureScrollView //call this function when you need to set scrollView
{
float width = self.view.bounds.size.width;
scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, width, 162)];
scrollView.delegate = self;
scrollView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:scrollView];
scrollView.contentSize = CGSizeMake(width*self.imageArray.count,0);
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = YES;
[self setupScrollView:scrollView];
}
2.
- (void)setupScrollView:(UIScrollView*)scrMain {
[self addImageArrayToScrollView:scrMain image:self.imageArray ];//send image array to this function.
// enable timer after each 2 seconds for scrolling.
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(scrollingTimer) userInfo:nil repeats:YES];
}
3. This function will set the image array to index according to array count.
-(void)addImageArrayToScrollView:(UIScrollView*)scrlView image:(NSArray*)imgarr {
for(int index=0; index < [self.imageArray count]; index++)
{
NSDictionary *dict=[self.imageArray objectAtIndex:index];
NSString *image=[dict valueForKey:@"image_slide"];
UIImageView *bigImage=[[UIImageView alloc]init];
bigImage.frame = CGRectMake(scrlView.bounds.size.width*index, 0, self.view.bounds.size.width, 162);
[bigImage setImageWithURL:[NSURL URLWithString:[image stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]];
[self.objectArray insertObject:bigImage atIndex:index];
[scrlView addSubview:bigImage];
[scrlView addSubview:[self.objectArray objectAtIndex:index]];
}
}
4. To change the image after each 2 seconds
- (void)scrollingTimer {
// calculate next page to display
int nextPage = (int)(contentOffset/scrollView.frame.size.width) + 1 ;
// if page is not equals to the array count, display it
if( nextPage <= self.imageArray.count ) {
[scrollView setContentOffset:CGPointMake(contentOffset, 0) animated:YES];
contentOffset = contentOffset + self.view.bounds.size.width;
// else start sliding form 1
} else {
contentOffset = 0;
[scrollView setContentOffset:CGPointMake(contentOffset, 0) animated:YES];
}
}
5. Don’t forget to set contentOffSet in viewDidLoad
- (void)viewDidLoad {
[super viewDidLoad];
contentOffset = 0;
// Do any additional setup after loading the view.
}
0 Comment(s)