如果在UINavigationController内设置一个UIViewControlller,而UIViewController的第一个子视图是UIScrollView的话,UIScrollview里面所有的subView都会发生下移64个像素;
修正方案:
把scrollView更改地位,是它不是子视图树的根部第一个子视图。
- (void)viewDidLoad
{
UIView * tmpBackGround = [[UIView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:tmpBackGround];
_topScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, tmpPointY, MainWidth, 120)];
_topScrollView.delegate = self;
[_topScrollView setBackgroundColor:[UIColor blackColor]];
// 分页
[_topScrollView setPagingEnabled:YES];
// 回弹
[_topScrollView setBounces:YES];
// 关闭滚动条
[_topScrollView setShowsHorizontalScrollIndicator:NO];
[_topScrollView setShowsVerticalScrollIndicator:NO];
// 滚动范围
[_topScrollView setContentSize:CGSizeMake(MainWidth * 3, 120)];
// 如果是iOS7应添加self.automaticallyAdjustsScrollViewInsets = NO;以防止黑边问题
if (IsIOS7) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
[tmpBackGround addSubview:_topScrollView];
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(130, 64 + 100, MainWidth - 260, 20)];
[_pageControl setBackgroundColor:[UIColor grayColor]];
// 设置选中点颜色
[_pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]];
// 点的个数
[_pageControl setNumberOfPages:3];
// 起始页
[_pageControl setCurrentPage:0];
[_pageControl setAlpha:0.5];
[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];
[tmpBackGround addSubview:_pageControl];
}
#pragma mark - scrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSInteger currentPage = self.topScrollView.contentOffset.x / MainWidth;
[self.pageControl setCurrentPage:currentPage];
UIImageView * topImage = [[UIImageView alloc] initWithFrame:CGRectMake(MainWidth * currentPage, 0, MainWidth, 120)];
[topImage setContentMode:UIViewContentModeScaleToFill];
[topImage setBackgroundColor:[UIColor redColor]];
NSURL * url = [NSURL URLWithString:[self.imageArray objectAtIndex:currentPage]];
// [topImage setImageWithURL:url];
[topImage setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholderImage.png"]];
[self.topScrollView addSubview:topImage];
}
#pragma mark - pageControl
- (void)pageChanged:(id)sender
{
NSInteger currentPage = _pageControl.currentPage;
[self.topScrollView setContentOffset:CGPointMake(320 * currentPage, 0)];
}