`
zjjzmw1
  • 浏览: 1365056 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

循环scrollview的例子。

    博客分类:
  • iOS
阅读更多

 // ads

    _adsScrollView = [[UIScrollViewalloc] initWithFrame:CGRectMake(0.0f, 0.0f, kMainAdWidth, kMainAdHeight)];

    _adsScrollView.pagingEnabled = YES;

    _adsScrollView.bounces = NO;

    _adsScrollView.showsHorizontalScrollIndicator = NO;

    _adsScrollView.delegate = self;

    UITapGestureRecognizer *tapAds = [[UITapGestureRecognizeralloc] initWithTarget:self

                                                                             action:@selector(clickedAds)];

    [_adsScrollViewaddGestureRecognizer:tapAds];

    [self.viewaddSubview:_adsScrollView];

    

    _adsPageControl = [[UIPageControlalloc] initWithFrame:CGRectMake(0.0f, 134.0f, APPBOUND.size.width, 8.0f)];

    _adsPageControl.hidesForSinglePage = NO;

    _adsPageControl.pageIndicatorTintColor = [UIColorcolorWithHexString:@"#bcddf0"alpha:1.0f];

    _adsPageControl.currentPageIndicatorTintColor = [UIColorwhiteColor];

    [self.viewaddSubview:_adsPageControl];

    

    

    

    [SJBAdModelrequestAdListOnSucceed:^(id data) {

        kNSLog(@"data === %@",data);

        self.adsData = data;

        [self loadAds];

    } onFailure:^{

        kNSLog(@"data ===");

        self.adsData = [SJBAdModeladList];

        [self loadAds];

 

    }];

 

 

 

#pragma mark ==================添加轮播广告图======================

 

#pragma mark - UIScrollViewDelegate

//- (void)scrollViewDidScroll:(UIScrollView *)scrollView

//{

//    if ( scrollView == _adsScrollView ){

//        self.adsPageControl.currentPage = (int)(scrollView.contentOffset.x / kMainAdWidth) - 1;

//    }

//}

 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

    if ( scrollView == _adsScrollView ){

        NSInteger adsCount = [self.adsData count];

        int currentPage = (int)floor(scrollView.contentOffset.x / scrollView.frame.size.width);

        if (currentPage == 0) {

            [scrollView scrollRectToVisible:CGRectMake(kMainAdWidth * (adsCount),0,kMainAdWidth,kMainAdHeight) animated:NO];

        } else if ( currentPage == adsCount+1 ) {

            [scrollView scrollRectToVisible:CGRectMake(kMainAdWidth, 0.0f, kMainAdWidth,kMainAdHeight) animated:NO];

        }

    }

}

 

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{

    if ( scrollView == _adsScrollView ){

        if ([_adsAutoScrollTimerisValid]) {

            [_adsAutoScrollTimerinvalidate];

        }

    }

}

 

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

{

    if ( scrollView == _adsScrollView ){

        if (![_adsAutoScrollTimerisValid]) {

            _adsAutoScrollTimer = [NSTimerscheduledTimerWithTimeInterval:5.0

                                                                   target:self

                                                                 selector:@selector(autoScrollAds)

                                                                 userInfo:nil

                                                                  repeats:YES];

        }

    }

}

 

#pragma mark - Private Methods

 

- (void)loadAds

{

    NSInteger adsCount = [self.adsData count];

    self.adsScrollView.contentSize = CGSizeMake( (adsCount+2) * kMainAdWidth, kMainAdHeight);

    self.adsPageControl.numberOfPages = adsCount;

    if (adsCount == 0 ){

        return;

    }

    

    NSString *adImageUrl;

    for (int i=0; i<adsCount+2;i++){

        UIImageView *adImageView = [[UIImageView alloc] initWithFrame:CGRectMake(i * APPBOUND.size.width, 0.0f, kMainAdWidth, kMainAdHeight)];

        [adImageView setContentMode:UIViewContentModeScaleAspectFill];

        if ( i==0 ){

            adImageUrl = [self.adsData[adsCount-1] objectForKey:@"img"];

        }else if ( i==(adsCount+1) ){

            adImageUrl = [self.adsData[0] objectForKey:@"img"];

        }else{

            adImageUrl = [self.adsData[i-1] objectForKey:@"img"];

        }

        [adImageView setImageWithURL:[NSURL URLWithString:adImageUrl]];

        [self.adsScrollView addSubview:adImageView];

    }

    self.adsScrollView.contentOffset = CGPointMake(kMainAdWidth, 0.0f);

    

    if (adsCount > 1){

        [_adsAutoScrollTimerinvalidate];

        _adsAutoScrollTimer = [NSTimerscheduledTimerWithTimeInterval:5.0

                                                               target:self

                                                             selector:@selector(autoScrollAds)

                                                             userInfo:nil

                                                              repeats:YES];

    }

}

 

- (void)autoScrollAds

{

    NSInteger adsCount = [self.adsData count];

    int currentPage = (int)floor(self.adsScrollView.contentOffset.x / self.adsScrollView.frame.size.width);

    if (currentPage == 0) {

        [self.adsScrollViewscrollRectToVisible:CGRectMake(kMainAdWidth * (adsCount),0,kMainAdWidth,kMainAdHeight) animated:NO];

    } else if ( currentPage == adsCount ) {

        [self.adsScrollViewscrollRectToVisible:CGRectMake(kMainAdWidth, 0.0f, kMainAdWidth,kMainAdHeight) animated:NO];

    }else{

        [UIViewanimateWithDuration:0.5fanimations:^{

            self.adsScrollView.contentOffset = CGPointMake(kMainAdWidth * (currentPage + 1), 0.0f);

        }];

    }

}

 

- (void)clickedAds

{

    int currentPage = (int)floor(self.adsScrollView.contentOffset.x / self.adsScrollView.frame.size.width);

    NSDictionary *adData = [self.adsData objectAtIndex:(currentPage-1)];

//    SJBHelperViewController *webVC = [SJBHelperViewController SJBHelperVConURL:[adData objectForKey:@"downUrl"]];

//    [self.navigationController pushViewController:webVC animated:YES];

    TKQWebViewController *webVC = [TKQWebViewControllerwebVCWithURL:[adData objectForKey:@"downUrl"]];

//    [self.navigationController pushViewController:webVC animated:YES];

    [selfpresentViewController:webVC animated:YEScompletion:nil];

    

    

 

}

1
0
分享到:
评论

相关推荐

    无限循环列表 SuperScrollView

    SuperScrollView 无限循环列表插件 有十几个例子的实现 SuperScrollView 无限循环列表插件 有十几个例子的实现 SuperScrollView 无限循环列表插件 有十几个例子的实现

    coco creator scrollview 无限循环列表,排行榜列表

    ScrollView比官方例子优化更好!!!ScrollView是比较常用的UI组件之一,游戏中的任务榜、排行榜都少不了它,实际使用中存在一个问题,例如:在排行榜中要显示前100名玩家,如果真的把这100名玩家的信息全部创建,并...

    循环滑动列表二级树列表以及等级限制例子(基于SuperScrollView)

    基于SuperScrollView做的背包、成就、等级限制循环列表。SuperScrollView/Z_MyDemo文件夹是例子

    无限循环、自动翻页ScrollView加UIPageControl

    一个利用UIScrollView结合UIPageControl的小例子,可以实现以下功能: 1、滑动翻页效果,并对应下面UIPageConrol的点的状态; 2、滑动到两端时,可以继续循环滑动; 3、可以设置自动翻页时间; 4、每个page页都可...

    无限循环翻页ScrollView加UIPageControl

    一个利用UIScrollView结合UIPageControl的小例子,可以实现以下功能: 1、滑动翻页效果,并对应下面UIPageConrol的点的状态; 2、滑动到两端时,可以继续循环滑动; 3、每个page页都可获取点击事件,以实现与主页面...

    Unity无限滚动列表(自动分页和网络请求) ScrollView

    1.项目中应用组件,分享出来 2.支持横向和竖向无限滑动,基于ScrollView扩展 3.滑动时,自动计算分页,通过回调自动获取调用获取分页数据 4.使用简单,组件代码注释详细 5.例子简单明了

    UGUI ScrollRect滚动优化:无限循环利用Item

    参考NGUI ScrollView的例子写的一个UGUI下的循环利用滚动框。 好几年前的了,因为Unity版本可能有些报错 稍作修改就行。

    不间断滑动的UIScrollViw的使用例子

    最后,为了实现自动滑动,我们可以使用`NSTimer`定时改变`scrollView.contentOffset`,或者利用`CADisplayLink`更精确地控制动画帧率。记得在用户交互时暂停定时器,避免与手动滑动冲突。 总结一下,实现不间断滑动...

    ios-循环滚动.zip

    在这个例子中,可能有一个代理方法用于提供图片数组,另一个方法用于确定当前显示的图片索引。 3. **定时器(NSTimer)实现自动滚动**: 利用NSTimer,可以定期触发一个回调函数,从而实现视图的自动滚动。定时器...

    IOS应用源码——Viewchange 2无限循环浏览图片,Touch.rar

    在这个例子中,开发者可能使用了UIImageView作为每个图片的视图,并将它们添加到UIScrollView或UICollectionView中,通过设置contentSize和contentOffset来实现无限滚动的效果。 接着,"Touch"标签提示我们这个应用...

    UIScrollView.unitypackage

    UIScrollView 创建对象池循环利用实现无限滚动 Demo还有具体实现例子Package里都有。根据自己需求也可自行扩展。

    Infinite ScrollView(iPhone源代码)

     实现无限循环滚动的ScrollView,即ScrollView滚动到最后一页,继续滚动的时候将滚动到第一页。 小编注:感谢开发者@车鹏 推荐此代码,并且为代码加上demo例子。 Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0...

    字幕滚动效果的实现

    在这个例子中,我们创建了一个自定义的`ScrollView`子类,通过`Scroller`实现了平滑滚动。`smoothScrollTo()`方法用于启动平滑滚动到指定位置。 在实际应用中,你可能还需要根据需求调整滚动速度、方向以及是否循环...

    自定义datepicker

    "自定义datepicker"是一个这样的例子,它通过无限循环的ScrollView来实现,为用户提供了选择日期和时间的一种新颖方式。这个控件的设计和实现考虑了iOS 6.0及更高版本的兼容性,并且已经在Xcode 5.0和Xcode 5.1环境...

    UIScrollView定时滚动和循环滚动,可点击图片和PageController

    `initWithNibName:bundle:`方法是初始化控制器的地方,这里主要进行自定义初始化,但在这个例子中并未有特别的定制。 `scrollToNextPage:`方法是用于定时滚动的核心,它根据当前页码和`UIScrollView`的大小计算出...

    iphone 图片翻页demo 源码

    - 可以通过循环创建UIImageView对象,并将每一张图片设置为UIImageView的`image`属性,然后添加为ScrollView的子视图。每个UIImageView的frame应根据图片大小和ScrollView的contentSize来设定。 - 为了实现平滑的...

    实现无限滚动以及循环滚动的效果

    源码实现怎样制作无限滚动以及循环滚动的滚动视图的效果。即ScrollView的page数目可以...循环滚动,即ScrollView滚动到最后一页,继续滚动的时候将滚动到第一页。是一个不错的学习例子,喜欢的朋友可以下载学习一下。。

    ios 轮播图

    在iOS开发中,轮播图(也称为无限滚动或滑动视图)是一种常见的用户界面元素,用于展示一系列图片、文字或其他内容,并自动循环播放。本篇将详细讲解如何使用`UIScrollView`来实现一个基本的轮播图功能。 首先,...

    UIScrollView图片定时滚动和点击

    `- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil`是初始化方法,通常在这里进行自定义的初始化操作,但在这个例子中,我们没有看到具体的初始化内容。 `- (void)...

    自动循环滚动的UIScrollView

    3. **设置内容偏移**:使用`setContentOffset:animated:`方法来改变`ScrollView`的位置,实现自动滚动。在`NSTimer`的回调中,根据滚动方向调整contentOffset。 4. **监听触摸事件**:通过`addGestureRecognizer:`...

Global site tag (gtag.js) - Google Analytics