zoukankan      html  css  js  c++  java
  • 轮播图点击 手势 代码

    #import "HotNewsTableViewController.h"

    #import "HotNewsTableViewCell.h"

    #import "HotNews.h"

    #import "JudegNetWorkType.h"

    #import "HotNewsDetailViewController.h"

    #import "MJRefresh.h"

    #import "MBProgressHUD+Show.h"

    //当前屏幕宽

    #define kCurrWith [UIScreen mainScreen].bounds.size.width

    @interface HotNewsTableViewController ()

    {

        BOOL flag;

        

        NSInteger count;

    }

    @property (nonatomic, retain) NSMutableArray *allDataArray;

    @property (nonatomic, retain) NSMutableArray *imgDataArray;

    @property (nonatomic, retain) UILabel *label;

    @end

    @implementation HotNewsTableViewController

    - (id)initWithStyle:(UITableViewStyle)style

    {

        self = [super initWithStyle:style];

        if (self) {

            // Custom initialization

        }

        return self;

    }

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        

        self.title = @"今日热点";

        //初始化数组

        self.allDataArray = [NSMutableArray array];

        

        //设置头View

        self.tableView.tableHeaderView = [self setHeadView];

        //设置尾View

        self.tableView.tableFooterView = [self sendFootView];

        

        [NSTimer scheduledTimerWithTimeInterval:4.0f target:self selector:@selector(PageControlAction) userInfo:self repeats:YES];

        

        

         //NSLog(@" kuan : %f",);

        /**

         *  集成刷新控件

         */

        [self setupRefresh];

        

        count = 20;

    }

    //触发滚动

    - (void)PageControlAction

    {

        if (_allDataArray.count == 0) {

            return;

        }

        //取模型

        HotNews *hotNews = _allDataArray[_pageControl.currentPage + 1];

        _label.text = hotNews.title;

        

        //判断

        if (_pageControl.currentPage != 3) {

            //增加当前页

            _pageControl.currentPage = _pageControl.currentPage + 1;

            [_scrollView setContentOffset:CGPointMake(_pageControl.currentPage * kCurrWith, 0) animated:YES];

            return;

        } else {

            //为3时 -》 置0

            _pageControl.currentPage = 0;

            _scrollView.contentOffset = CGPointMake(0, 0);

            return;

        }

        

    }

    - (UIView *)setHeadView

    {

        UIView *allView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, kCurrWith, 170)] autorelease];

        

        _scrollView = [[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, kCurrWith, 145)] autorelease];

        //可滚动区域

        _scrollView.contentSize = CGSizeMake(kCurrWith * 4, CGRectGetHeight(_scrollView.frame));

        //添加手势

        UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGRAction:)];

        [_scrollView addGestureRecognizer:tapGR];

        

        _scrollView.pagingEnabled = YES;

        

        _scrollView.delegate = self;

        [allView addSubview:_scrollView];

        

        // 标题

        _label = [[[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetHeight(_scrollView.frame) + 5, kCurrWith, 20)] autorelease];

        _label.font = [UIFont systemFontOfSize:13.0f];

        [allView addSubview:_label];

        

        UIImageView *imageView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"title.jpg"]] autorelease];

        imageView.frame = CGRectMake(10, 3, 15, 15);

        [_label addSubview:imageView];

        

        // 小圆点

        _pageControl = [[[UIPageControl alloc] initWithFrame:CGRectMake(200, 0, 150, 15)] autorelease];

        _pageControl.numberOfPages = 4;

        _pageControl.currentPageIndicatorTintColor = [UIColor redColor];

        _pageControl.pageIndicatorTintColor = [UIColor colorWithRed:0.219 green:0.185 blue:1.000 alpha:1.000];

        [_pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged];

        [_label addSubview:_pageControl];

        

        return allView;

    }

    - (UIView *)sendFootView

    {

        UIView *allView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, kCurrWith, 30)] autorelease];

        

        UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];

        button.frame = CGRectMake(0, 0, kCurrWith, 30);

        [button setTitle:@"点击加载更多" forState:UIControlStateNormal];

        button.alpha = 0.7f;

        [button addTarget:self action:@selector(jiazaiButtonAction:) forControlEvents:UIControlEventTouchUpInside];

        button.backgroundColor = [UIColor blueColor];

        [allView addSubview:button];

        

        return allView;

    }

    - (void)jiazaiButtonAction:(UIButton *)sender

    {

        if ([JudegNetWorkType getNetWorkType] == BadNetWorkLink) {

            return;

        }

        

        NSString *str = [listUrlOne stringByAppendingString:[NSString stringWithFormat:@"%ld-20.html", (long)count]];

        NSURL *url = [NSURL URLWithString:str];

        NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

        

        __block HotNewsTableViewController *hotNewsTVC = self;

        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            

            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

            

            if (dict.count != 0) {

                for (NSDictionary *item in dict[@"T1348647909107"]) {

                    HotNews *hotNews = [HotNews new];

                    if (![item[@"digest"] isEqualToString:@""]) {

                        [hotNews setValuesForKeysWithDictionary:item];

                        [_allDataArray addObject:hotNews];

                        [hotNews release];

                    }

                }

            }

            //跟新页面

            dispatch_async(dispatch_get_main_queue(), ^{

                [self.tableView reloadData];

            });

        }];

        count += 20;

    }

    //处理轮播图 点击 手势

    - (void)tapGRAction:(UITapGestureRecognizer *)sender

    {

        for (int i = 0; i < 4; i ++) {//i 代表第几个模型

            //contentOffset  是scrollview当前显示区域顶点相对于frame顶点的偏移量

            if (_scrollView.contentOffset.x == i * kCurrWith) {

                HotNewsDetailViewController *hotNewsDetailVC = [[[HotNewsDetailViewController alloc] init] autorelease];

                

                HotNews *test = _allDataArray[i];

                hotNewsDetailVC.hotNews = test;

                hotNewsDetailVC.docid = test.docid;

                [self.navigationController pushViewController:hotNewsDetailVC animated:YES];

                

            }

        }

    }

    ////

    //- (void)pageControlAction:(UIPageControl *)sender

    //{

    //    [_scrollView setContentOffset:CGPointMake(sender.currentPage * kCurrWith, 0) animated:YES];

    //     NSLog(@"-------------------");

    //}

    /**

     *  集成刷新控件

     */

    - (void)setupRefresh

    {

        // 1.下拉刷新(进入刷新状态就会调用self的headerRereshing)

        [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing)];

        [self.tableView headerBeginRefreshing];

        

    //    if (_allDataArray.count == 0) {

    //        [self.tableView headerBeginRefreshing];

    //    }

        

        // 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)

        // 设置文字(也可以不设置,默认的文字在MJRefreshConst中修改)

        self.tableView.headerPullToRefreshText = @"下拉可以刷新了";

        self.tableView.headerReleaseToRefreshText = @"松开马上刷新了";

        self.tableView.headerRefreshingText = @"正在帮你刷新中...";

        

        self.tableView.footerPullToRefreshText = @"上拉可以加载更多数据了";

        self.tableView.footerReleaseToRefreshText = @"松开马上加载更多数据了";

        self.tableView.footerRefreshingText = @"正在帮你加载中...";

    }

    #pragma mark - 发送网络请求,显示数据

    - (void)headerRereshing

    {

        if ([JudegNetWorkType getNetWorkType] == BadNetWorkLink) {

           

            NSLog(@"网络异常,头条数据显示不出来");

        } else{

            

            if (_allDataArray.count == 0) {

                NSURL *url = [NSURL URLWithString:HotNews_List_URL];

                NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

                

                __block HotNewsTableViewController *hotTVC = self;

                

                

                [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

                    

                    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

                    

                    if (dict.count != 0) {

                        for (NSDictionary *item in dict[@"T1348647909107"]) {

                            HotNews *hotNews = [HotNews new];

                            if (![item[@"digest"] isEqualToString:@""]) {

                                

                                [hotNews setValuesForKeysWithDictionary:item];

                                [_allDataArray addObject:hotNews];

                                [hotNews release];

                            }

                        }

                    }

                    

                    //跟新页面

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [hotTVC updateDataForUI];

                    });

                }];

                

            } else {

                NSURL *url = [NSURL URLWithString:HotNews_List_URL];

                NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

                

                __block HotNewsTableViewController *hotTVC = self;

                [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

                    

                    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

                    NSMutableArray *newHead = [NSMutableArray array];

                    if (dict.count != 0) {

                        for (NSDictionary *item in dict[@"T1348647909107"]) {

                            HotNews *hotNews = [HotNews new];

                            if (![item[@"digest"] isEqualToString:@""]) {

                                

                                [hotNews setValuesForKeysWithDictionary:item];

                            }

                            for (int i = 0; i<_allDataArray.count; i++) {

                                if ([((HotNews *)_allDataArray[i]).title isEqualToString:hotNews.title]) {

                                    flag = YES;

                                }

                            }

                            if (!flag) {

                                [newHead addObject:hotTVC];

                                flag = NO;

                            }

                            [hotNews release];

                        }

                    }

                    for (HotNews *hotNews in newHead) {

                        [_allDataArray insertObject:hotNews atIndex:0];

                    }

                    //跟新页面

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [hotTVC updateDataForUI];

                    });

                }];

            }

        }

    }

    #pragma mark 更新页面

    - (void)updateDataForUI

    {

        [self.tableView reloadData];

        [self.tableView headerEndRefreshing];

        

        [MBProgressHUD hideHUDForView:[UIApplication sharedApplication].keyWindow animated:YES];

        [MBProgressHUD showSuccessWithText:@"请求成功"];

    }

    #pragma mark - Table view data source

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    {

        return 1;

    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    {

        return _allDataArray.count - 4;

    }

    // 显示内容

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    {

        static NSString *cellIdentifier = @"cellIdentifier";

        HotNewsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

        

        if (!cell) {

            cell = [[[HotNewsTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];

        }

        if (_allDataArray.count) {

            HotNews *hotNews = _allDataArray[indexPath.row + 4];

            NSURL *imgUrl = [NSURL URLWithString:hotNews.imgsrc];

            [cell.imgsrcView sd_setImageWithURL:imgUrl];

            cell.hotNews = hotNews;

        }

        // 滚动图片新闻

        for (int i = 0; i < 4; i++) {

            HotNews *hotNews = _allDataArray[i+4];

            

            NSURL *imgUrl = [NSURL URLWithString:hotNews.imgsrc];

            UIImageView *imageView = [[UIImageView alloc] init];

            [imageView sd_setImageWithURL:imgUrl];

            

            imageView.frame = CGRectMake(CGRectGetWidth(_scrollView.frame) * i, 0, CGRectGetWidth(_scrollView.frame), CGRectGetHeight(_scrollView.frame));

            [_scrollView addSubview:imageView];

        }

        

        HotNews *hotNews = _allDataArray[0];

        _label.text = [NSString stringWithFormat:@"      %@", hotNews.title];

        

        return cell;

    }

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    {

        HotNewsDetailViewController *hotNewsDetailVC = [[[HotNewsDetailViewController alloc] init] autorelease];

        

        HotNews *test = _allDataArray[indexPath.row + 4];

        

        hotNewsDetailVC.hotNews = test;

        

        hotNewsDetailVC.docid = test.docid;

        

        [self.navigationController pushViewController:hotNewsDetailVC animated:YES];

        

    }

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    {

        return 85;

    }

    @end

  • 相关阅读:
    yum与rpm常用命令
    centos7更改时区,同步时间
    剑指Offer45:扑克牌顺子(java)
    剑指Offer44:翻转单词顺序列(java)
    剑指Offer43:左旋转字符串(Java)
    剑指Offer42:和为S的两个数字(java)
    剑指Offer41:和为S的连续正数序列(Java)
    剑指Offer39:平衡二叉树(Java)
    剑指Offer40:数组中只出现一次的数字(Java)
    剑指Offer38:二叉树的深度(Java)
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4323482.html
Copyright © 2011-2022 走看看