iOS-Post数据解析 ScrollView自动轮播

第三方库涉及到

#import "AFNetworking.h" //解析get post请求数据
#import "MJExtension.h" //解析Json数据
#import "UIImageView+WebCache.h"//通过url获取图片


定义全局变量

@interface TableViewControllerFirst ()<UIScrollViewDelegate>
{ 
    NSDictionary *_dataDict;
    NSDictionary *_IDNum;
    NSTimer *_tiemr;
}
@end

这里以掌厨APP截取的一条数据为例 (post数据)

- (void)viewDidLoad {
    
    [super viewDidLoad];
    //解析数据
    [self postLoad];
    
}


#pragma mark - PostLoad

-(void)postLoad{
//初始化全局变量
    _dataDict = [NSDictionary dictionary];
    _IDNum = [NSMutableDictionary dictionary];
    
    
//post数据解析
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSString *url = @"http://api.izhangchu.com/";
    NSDictionary *dictionary = @{@"methodName":@"HomeIndex",@"user_id":@"0",@"version":@"1.0"};
    manager.requestSerializer=[AFHTTPRequestSerializer serializer];
    manager.responseSerializer=[AFHTTPResponseSerializer serializer];
    
    [manager POST:url parameters:dictionary success:^(AFHTTPRequestOperation *operation, id responseObject) {
        

//得到Json数据        
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:[operation.responseString dataUsingEncoding:NSUTF8StringEncoding] options:(NSJSONReadingAllowFragments) error:nil];
        
       _dataDict = dict[@"data"];
        [self.tableView reloadData];
        [self scrollViewUI];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"%@",error.description);
        
    }];

}


#pragma mark - scrollViewUI
-(void)scrollViewUI{
    
    NSDictionary *bannerDict = _dataDict[@"banner"];
    NSArray *dataArray = bannerDict[@"data"];
    NSMutableArray *imageArray = [NSMutableArray array];
    
    static int i = 0;
    for (NSDictionary *dict in dataArray) {
        ScrollViewModel *model = [[ScrollViewModel alloc]mj_setKeyValues:dict];
        [imageArray addObject:model.image];
        [_IDNum setValue:model.link forKey:[NSString stringWithFormat:@"%d",i]];
        i++;
    }
    
    for (int i = 0; i < imageArray.count+1; i++) {
            //结尾后再设置一张图片 (图片为第一张的图片)可以平滑过渡 手动滑动不会有突兀感
            if (i==imageArray.count) {
                UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i*self.scroll.frame.size.width, 0, self.scroll.frame.size.width, self.scroll.frame.size.height)];
                [imageView setImageWithURL:[NSURL URLWithString: [NSString stringWithFormat:@"%@",imageArray[0]]]];
                [self.scroll addSubview:imageView];
            }
            else{

            UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i*self.scroll.frame.size.width, 0, self.scroll.frame.size.width, self.scroll.frame.size.height)];
            [imageView setImageWithURL:[NSURL URLWithString: [NSString stringWithFormat:@"%@",imageArray[i]]]];
            imageView.userInteractionEnabled = YES;
            UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageViewClick:)];
            [imageView addGestureRecognizer:tap];
            imageView.tag = 100 + i;
                [self.scroll addSubview:imageView];
            }
    }
    
    self.scroll.delegate = self;
        self.scroll.contentSize = CGSizeMake(self.view.frame.size.width*5, 0);
    self.scroll.showsHorizontalScrollIndicator =NO;
    self.scroll.showsVerticalScrollIndicator = NO;
    self.scroll.pagingEnabled = YES;
    self.scroll.scrollEnabled = YES;
   
}

//ScrollView滚动时连接过渡设置
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    if (self.scroll.contentOffset.x > self.view.frame.size.width*4) {
        [self.scroll setContentOffset:CGPointMake(0, 0) animated:NO];
    }else if (self.scroll.contentOffset.x < 0){
        [self.scroll setContentOffset:CGPointMake(4*self.scroll.frame.size.width, 0) animated:NO];      }
//开始定时器
    [self startTimer];
}

-(void)startTimer{
    if (!_tiemr) {
        _tiemr = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(startScroll) userInfo:nil repeats:YES];
    }
    
}

//ScrollView自动轮方法
-(void)startScroll{
    static int count = 0 ;
    count ++;
    if (count == 4) {
        count=0;
        [self.scroll setContentOffset:(CGPointMake(count*self.scroll.frame.size.width, 0)) animated:NO];
        return;
    }
    [self.scroll setContentOffset:(CGPointMake(count*self.scroll.frame.size.width, 0)) animated:YES];
    
    
}


你可能感兴趣的:(iOS-Post数据解析 ScrollView自动轮播)