UIScrollerView和UIPageView联合使用

ViewController.h

#import <UIKit/UIKit.h>

@interface FourthViewController : UIViewController<UIScrollViewDelegate>
{
    CGFloat screenWidth;
    NSArray *AdImgArray;
    int TimeNum;
    BOOL Tend;
}

@property (strong, nonatomic) IBOutlet UIScrollView *AdScrollView;
@property (strong, nonatomic) IBOutlet UIPageControl *AdPageControl;
- (IBAction)PageControlValueChange:(id)sender;

@end

ViewController.m

#import "FourthViewController.h"

@interface FourthViewController ()

@end

@implementation FourthViewController
@synthesize AdPageControl;
@synthesize AdScrollView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    screenWidth = self.view.frame.size.width;
    
    AdScrollView.scrollEnabled = YES;
    AdScrollView.pagingEnabled = YES;
    AdScrollView.showsHorizontalScrollIndicator = NO;
    AdScrollView.showsVerticalScrollIndicator = NO;
    AdScrollView.delegate = self;
    
    [NSTimer scheduledTimerWithTimeInterval:1 target: self selector: @selector(handleTimer:)  userInfo:nil  repeats: YES];
    AdImgArray = [[NSArray alloc]initWithObjects:
         @"http://code4app.com/img/code4app_logo.png",
         @"http://ui4app.com/img/ui4app_logo.png",
         @"http://www.baidu.com/img/baidu_sylogo1.gif",nil];
    [self AdImg:AdImgArray];
    
    [self setCurrentPage:AdPageControl.currentPage];
}

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

#pragma mark - 5秒换图片
- (void) handleTimer: (NSTimer *) timer
{
    if (TimeNum % 5 == 0)
    {
        
        if (!Tend)
        {
            AdPageControl.currentPage ++;
            
            if (AdPageControl.currentPage == AdPageControl.numberOfPages - 1)
                Tend = YES;
        }
        
        else
        {
            AdPageControl.currentPage --;
            
            if (AdPageControl.currentPage == 0)
                Tend = NO;
        }
        
        [UIView animateWithDuration:0.7 //速度0.7秒
                         animations:^{//修改坐标
                             AdScrollView.contentOffset = CGPointMake(AdPageControl.currentPage * screenWidth, 0);
                         }];
    }
    
    TimeNum ++;
}
#pragma mark - 下载图片
void UIImageFromURL( NSURL * URL, void (^imageBlock)(UIImage * image), void (^errorBlock)(void) )
{
    dispatch_async( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void)
                   {
                       NSData * data = [[NSData alloc] initWithContentsOfURL:URL] ;
                       UIImage * image = [[UIImage alloc] initWithData:data];
                       dispatch_async( dispatch_get_main_queue(), ^(void){
                           if( image != nil )
                           {
                               imageBlock( image );
                           } else {
                               errorBlock();
                           }
                       });
                   });
}

- (void)AdImg:(NSArray*)arr
{
    [AdScrollView setContentSize:CGSizeMake(screenWidth * [arr count], AdScrollView.frame.size.height)];
    AdPageControl.numberOfPages=[arr count];
    
    for ( int i=0; i<[arr count]; i++) {
        NSString *url=[arr objectAtIndex:i];
        UIButton *img=[[UIButton alloc]initWithFrame:CGRectMake(screenWidth * i, 0, screenWidth, AdScrollView.frame.size.height)];
        [img addTarget:self action:@selector(Action) forControlEvents:UIControlEventTouchUpInside];
        [AdScrollView addSubview:img];
        UIImageFromURL( [NSURL URLWithString:url], ^( UIImage * image )
                       {
                           [img setImage:image forState:UIControlStateNormal];
                       }, ^(void){
                       });
    }
    
}

- (void)Action
{
    
    NSURL *theurl = [NSURL URLWithString:[AdImgArray objectAtIndex:AdPageControl.currentPage]];
    NSLog(@"%@", theurl);
}

#pragma mark - scrollView && page
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    AdPageControl.currentPage = scrollView.contentOffset.x / screenWidth;
    
   [self setCurrentPage:AdPageControl.currentPage];
}

#pragma mark - pageControl
//自定义pageControl的小圆点
- (void) setCurrentPage:(NSInteger)secondPage {
    
    for (NSUInteger subviewIndex = 0; subviewIndex < [AdPageControl.subviews count]; subviewIndex++) {
        UIImageView* subview = [AdPageControl.subviews objectAtIndex:subviewIndex];
        CGSize size; //圆点的大小
        size.height = 24/3;
        size.width = 24/3;
        [subview setFrame:CGRectMake(subview.frame.origin.x, subview.frame.origin.y,
                                     size.width,size.height)];
        if (subviewIndex == secondPage) [subview setImage:[UIImage imageNamed:@"pageControlBg_CurrentPage.png"]];
        else [subview setImage:[UIImage imageNamed:@"pageControlBg.png"]];
    }
}

- (IBAction)PageControlValueChange:(UIPageControl *)sender {
    
    int page = AdPageControl.currentPage; //获取当前pagecontroll的值
    
    [AdScrollView setContentOffset:CGPointMake(screenWidth * page, 0)]; //根据pagecontroll的值来改变scrollview的滚动位置,以此切换到指定的页面
    
    [self setCurrentPage:AdPageControl.currentPage];
}
@end

ViewController.xib

//不要忘了将 UIScrollView 中的 delegate 连接 到File‘s Owner

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值