三個UIImageView的輪播圖

工程結(jié)構(gòu).png

*封裝的ScrollView文件

#import "OrderView.h"

@interface OrderView ()<UIScrollViewDelegate>

//三個字符串, 存放圖片的名字
@property (nonatomic, copy) NSString *leftImageNamed;
@property (nonatomic, copy) NSString *centerImageNamed;
@property (nonatomic, copy) NSString *righImageNamed;

//三個UIImageView, 存放圖片
@property (nonatomic, strong) UIImageView *centerImageView;
@property (nonatomic, strong) UIImageView *leftImageView;
@property (nonatomic, strong) UIImageView *rightImageView;

//一個ScrollView
@property (nonatomic, strong) UIScrollView *scrollView;

//存放圖片數(shù)據(jù)源的數(shù)組
@property (nonatomic, strong) NSMutableArray *dataArray;

@end


@implementation OrderView

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        
        self.dataArray = [NSMutableArray array];
        
        for (int i = 0; i < 10; i++) {
            NSString *string = [NSString stringWithFormat:@"ima_%d.jpg", i];
            
            [self.dataArray addObject:string];
        } 
        #布局輪播效果
        [self createView];
    }
    return self;
}

- (void)createView
{
    self.scrollView = [[UIScrollView alloc] initWithFrame:self.bounds];
    
    self.scrollView.pagingEnabled = YES;
    
    self.scrollView.bounces = NO;
    
    self.scrollView.delegate = self;
    # 設(shè)置滾動范圍
    self.scrollView.contentSize = CGSizeMake(self.frame.size.width * 3, self.frame.size.height);
    
    [self addSubview:self.scrollView];
    
    //賦值圖片
    self.centerImageNamed = self.dataArray.firstObject;
    self.leftImageNamed = self.dataArray.lastObject;
    self.righImageNamed = self.dataArray[1];
   
     #注意三個imageView的偏移量
    //初始化中間的imageView
    self.centerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.frame.size.width, 0, self.frame.size.width, self.frame.size.height)];
    
    self.centerImageView.image = [UIImage imageNamed:self.centerImageNamed];
    
    [self.scrollView addSubview:self.centerImageView];
    
   
    //初始化左邊的imageview
    self.leftImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
    
    self.leftImageView.image = [UIImage imageNamed:self.leftImageNamed];
    
    [self.scrollView addSubview:self.leftImageView];
    
    
    //初始化右邊的imageView
    self.rightImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.frame.size.width * 2, 0, self.frame.size.width, self.frame.size.height)];
    
    self.rightImageView.image = [UIImage imageNamed:self.righImageNamed];
    
    [self.scrollView addSubview:self.rightImageView];
    
    # 設(shè)置初始化偏移量(目的讓中間的imageView顯示)
    [self.scrollView setContentOffset:CGPointMake(self.frame.size.width, 0)];
    
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //向右滑動(偏移量減小到0)
    if (scrollView.contentOffset.x == 0) {
        
        self.righImageNamed = self.centerImageNamed;
        
        self.centerImageNamed = self.leftImageNamed;
        
        NSInteger index = [self imageIndex:self.leftImageNamed];
        //判斷是最后一張還是第一張
        if (index == 0) {
            self.leftImageNamed = self.dataArray.lastObject;
        } else {
            self.leftImageNamed = self.dataArray[index - 1];
        }

        self.centerImageView.image = [UIImage imageNamed:self.centerImageNamed];
        self.leftImageView.image = [UIImage imageNamed:self.leftImageNamed];
        self.rightImageView.image = [UIImage imageNamed:self.righImageNamed];
        
        //交換圖片后, 立馬更改偏移量, 在將中間的顯示出來
        [self.scrollView setContentOffset:CGPointMake(self.frame.size.width, 0)];
        
    }
    
    // [scrollView.panGestureRecognizer translationInView:scrollView];
    //向左滑動(偏移量增加到2陪的寬度)
    if (scrollView.contentOffset.x == self.frame.size.width * 2) {
        
        self.leftImageNamed = self.centerImageNamed;
        
        self.centerImageNamed = self.righImageNamed;
        
        NSInteger index = [self imageIndex:self.righImageNamed];
        
        if (index == self.dataArray.count - 1) {
            self.righImageNamed = self.dataArray.firstObject;
        } else {
            self.righImageNamed = self.dataArray[index + 1];
        }
                
        self.centerImageView.image = [UIImage imageNamed:self.centerImageNamed];
        
        self.leftImageView.image = [UIImage imageNamed:self.leftImageNamed];
        self.rightImageView.image = [UIImage imageNamed:self.righImageNamed];
        
        [self.scrollView setContentOffset:CGPointMake(self.frame.size.width, 0)];
    }
}

- (NSInteger)imageIndex:(NSString *)imageNamed
{
    return [self.dataArray indexOfObject:imageNamed];
}
@end```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容