工程結(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;
# 設置滾動范圍
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];
# 設置初始化偏移量(目的讓中間的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```