#import "ViewController.h"
#import "NewsViewController.h"
#define kScreenBounds ([[UIScreen mainScreen] bounds])
#define kScreenWidth (kScreenBounds.size.width)
#define kScreenHeight (kScreenBounds.size.height)
@interface ViewController () <UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *titleScrollView;
@property (weak, nonatomic) IBOutlet UIScrollView *contentScrollView;
@property (nonatomic, assign) NSInteger currentPageIndex; //!< 当前页
@property (nonatomic, assign) NSInteger nextPageIndex;//!< 下一页
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 自动设置第一个ScrollView的contentInset属性,这里不让它自动调整
// self.contentScrollView.contentInset
self.automaticallyAdjustsScrollViewInsets = NO;
// 创建对应的ViewController
for (int i=0; i<5; i++) {
NewsViewController *newsVC = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:nil];
// 把ViewController添加到ScrollView上
[self addChildViewController:newsVC];
[self.contentScrollView addSubview:newsVC.view];
[newsVC didMoveToParentViewController:self];
// 调整每个ViewController的View的frame
newsVC.view.frame = CGRectMake(i*kScreenWidth, 0, kScreenWidth, kScreenHeight-64-44);
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(i*100, 0, 100, 44)];
label.text = [NSString stringWithFormat:@"第%d页", i];
label.textAlignment = NSTextAlignmentCenter;
label.tag = i+100;
label.textColor = [UIColor colorWithRed:230/255.0f green:230/255.0f blue:230/255.0f alpha:1.0f];
[self.titleScrollView addSubview:label];
}
self.contentScrollView.contentSize = CGSizeMake(kScreenWidth*5, kScreenHeight-64-44);
self.titleScrollView.contentSize = CGSizeMake(5*100, 44);
self.contentScrollView.delegate = self;
self.contentScrollView.pagingEnabled = YES;
}
// ScrollView滚动的时候
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat currentIndexOffsetX = self.currentPageIndex*kScreenWidth;
NSLog(@"currentIndexOffsetX = %f currentPageIndex = %ld",currentIndexOffsetX,self.currentPageIndex);
if (scrollView.contentOffset.x > currentIndexOffsetX) {
self.nextPageIndex = self.currentPageIndex+1;
}
else {
self.nextPageIndex = self.currentPageIndex-1;
}
CGFloat dist = ABS(scrollView.contentOffset.x - currentIndexOffsetX);
CGFloat p = dist / kScreenWidth; // 移动的比例
UILabel *currentPageTitleLabel = (UILabel *)[self.titleScrollView viewWithTag:100+self.currentPageIndex];
UILabel *nextPageTitleLabel = (UILabel *)[self.titleScrollView viewWithTag:100+self.nextPageIndex];
// 1.3
// 按比例变形
currentPageTitleLabel.transform = CGAffineTransformMakeScale(1.3 - 0.3*p, 1.3 - 0.3*p);
nextPageTitleLabel.transform = CGAffineTransformMakeScale(1.0+0.3*p, 1.0+0.3*p);
// 颜色的变化
CGFloat c = 230 * p;
CGFloat c1 = 25 * p;
UIColor *selectedColor = [UIColor colorWithRed:(230-c)/255.0f green:(230-c)/255.0f blue:(230+c1)/255.0f alpha:1.0f];
UIColor *unselectedColor = [UIColor colorWithRed:c/255.0f green:c/255.0f blue:(255-c1)/255.0f alpha:1.0f];
currentPageTitleLabel.textColor = unselectedColor;
nextPageTitleLabel.textColor = selectedColor;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSInteger selectedTitleIndex = scrollView.contentOffset.x / kScreenWidth;
UILabel *selectedTitleLabel = (UILabel *)[self.titleScrollView viewWithTag:selectedTitleIndex+100];
// 滚动ScrollView,让指定的区域可见,这里是让titleScrollView滚动到让titleLabel显示出来
[self.titleScrollView scrollRectToVisible:selectedTitleLabel.frame animated:YES];
}
// 开始拖拽的时候
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.currentPageIndex = scrollView.contentOffset.x / kScreenWidth;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}