同事的uiscrollview无限滑动

用的时候直接这样:

- (void)initScreenView

{

    CGRect rect = CGRectMake(0,0, self.view.bounds.size.width,330);

    if (!_screenView &&self.appInfo.screenarray.count>0){

        _screenView = [[ScreenViewalloc] initWithFrame:rect];

    }

     [self.view addSubview:_screenView];

    [_screenView refreshAppScreens:self.appInfo];

}

刷新数据时直接调用:  [_screenView   refreshAppScreens : self .appInfo ];



上代码吧:


#import <UIKit/UIKit.h>

#import "GNBaseDef.h"

@interface ScreenView : UIView<UIScrollViewDelegate>

{

    NSMutableArray*  _screenArray; //for screens

    NSMutableArray*  _itemsArray; //items array


    UIScrollView*    _scrollView;  //scroll view

    NSInteger        _currIndex;   //index

    AppBaseInfo*     _baseInfo;    //app base info

    NSInteger        _curPage;

    NSInteger        _totalPage;

    NSMutableArray  *_currImages;

}

@property (nonatomic,retain) AppBaseInfo* baseInfo;

/*refresh screen*/

- (void)refreshAppScreens:(AppBaseInfo*)object;

@end



#import "ScreenView.h"

#import <QuartzCore/QuartzCore.h>

#import "UIImageView+WebCache.h"


@implementation ScreenView

@synthesize baseInfo = _baseInfo;

- (id)initWithFrame:(CGRect)frame

{

    self = [super initWithFrame:frame];

    if (self) {

        //background color

        self.backgroundColor = [UIColor colorWithRed:240.0f/255 green:240.0f/255 blue:240.0f/255 alpha:1.0f];

        //scroll view

        _curPage = 1;

        _currImages = [[NSMutableArray alloc] initWithCapacity:3];

        _scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];

        _scrollView.backgroundColor = [UIColor clearColor];

        _scrollView.contentSize = self.bounds.size;

        _scrollView.showsVerticalScrollIndicator = NO;

        _scrollView.showsHorizontalScrollIndicator = NO;

        _scrollView.delegate = self;

        _scrollView.pagingEnabled = YES;

        [self addSubview:_scrollView];

    }

    return self;

}


- (void)dealloc

{

    SAFE_RELEASE(_baseInfo);

    SAFE_RELEASE(_scrollView);

    SAFE_RELEASE(_itemsArray);

    SAFE_RELEASE(_screenArray);

    SAFE_RELEASE(_currImages);

    [super dealloc];

}


#pragma mark --

#pragma mark Methords

/*refresh screen*/

- (void)refreshAppScreens:(AppBaseInfo*)object

{

    if (!object) return;

    self.baseInfo = object;

    _totalPage  = self.baseInfo.screenarray.count;

    _scrollView.contentSize = CGSizeMake(320*3,self.bounds.size.height);

    if (!_screenArray){

        _screenArray = [[NSMutableArray alloc] initWithCapacity:3];

    }

    [_screenArray removeAllObjects];

    [_screenArray addObjectsFromArray:self.baseInfo.screenarray];

    [self refreshScrollViewData];

}

- (void)refreshScrollViewData {

    

    NSArray *subViews = [_scrollView subviews];

    if([subViews count] != 0) {

        [subViews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    }

    [self getShowImagesWithCurpage:_curPage];

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

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:_scrollView.frame];

        [imageView setImageWithURL:[NSURL URLWithString:_currImages[i]]];

        imageView.frame = CGRectOffset(_scrollView.frame, _scrollView.frame.size.width * i,0);

        [_scrollView addSubview:imageView];

    }

    [_scrollView setContentOffset:CGPointMake(_scrollView.frame.size.width,0)];

    

}

- (NSArray *)getShowImagesWithCurpage:(int)page {

    int prePage = [self validPageValue:_curPage-1];

    int lastPage = [self validPageValue:_curPage+1];

    if([_currImages count] != 0) [_currImages removeAllObjects];

    [_currImages addObject:[_screenArray objectAtIndex:prePage-1]];

    [_currImages addObject:[_screenArray objectAtIndex:_curPage-1]];;

    [_currImages addObject:[_screenArray objectAtIndex:lastPage-1]];

    return _currImages;

}

- (int)validPageValue:(NSInteger)value

{

    if(value == 0) value = _totalPage;

    if(value == _totalPage + 1)

        value = 1;

    return value;

}

#pragma mark --

#pragma mark UIScrollViewDelegate

- (void)scrollViewDidScroll:(UIScrollView *)aScrollView

{

    int x = aScrollView.contentOffset.x;

    if(x >= (2*_scrollView.frame.size.width)) {

        _curPage = [self validPageValue:_curPage+1];

        [self refreshScrollViewData];

    }

    if(x <= 0) {

        _curPage = [self validPageValue:_curPage-1];

        [self refreshScrollViewData];

    }

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)aScrollView

{

    [_scrollView setContentOffset:CGPointMake(_scrollView.frame.size.width,0) animated:YES];

}


@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值