滚动视图(二实例)

第一步:在ScrollViewController中添加代理UIScrollViewDelegate


ScrollViewController.h

#import <UIKit/UIKit.h>

@interface ScrollViewController : UIViewController<UIScrollViewDelegate>

@end
第二步:ScrollViewController.m

#import "ScrollViewController.h"

@interface ScrollViewController ()
{
    UIScrollView * _scrollView;
    UIScrollView * _onescrollView;
    UIPageControl * _pageControl;
    
}

@end

@implementation ScrollViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view.
    //创建滚动视图与屏幕大小相等
    _scrollView = [[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
    //添加到view视图上
    _scrollView.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:_scrollView];
    [_scrollView release];
    _scrollView.contentSize = CGSizeMake((_scrollView.frame.size.width)*3, _scrollView.frame.size.height);
    //设置代理
    _scrollView.delegate = self;
    //设置分页
    _scrollView.pagingEnabled = YES;
    
    
    
    
    
    
    //第一个小的ScrollView上添加图片并将小ScrollView加入大的contentSize
    for (int i = 0; i< 3; i++) {
        _onescrollView = [[UIScrollView alloc] initWithFrame:CGRectMake((_scrollView.frame.size.width)*i, 0, _scrollView.frame.size.width,  _scrollView.frame.size.height)];
        _onescrollView.contentSize = CGSizeMake(_scrollView.frame.size.width, _scrollView.frame.size.height);
        [_scrollView addSubview:_onescrollView];
        [_onescrollView release];
        _onescrollView.tag = 200+i;
         _onescrollView.delegate = self;
        
        UIImage * image1 = [UIImage imageNamed:[NSString stringWithFormat:@"h%d.jpeg",i+1]];
        UIImageView * imageView1 = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, _scrollView.frame.size.width, _scrollView.frame.size.height)];
        imageView1.image = image1;
        imageView1.tag = 100+i;
        _onescrollView.maximumZoomScale = 3;
        _onescrollView.minimumZoomScale = 0.1;
        [_onescrollView addSubview:imageView1];
        [imageView1 release];
        
        
    }
    
    
    
    //设置滑动块
    _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 300, 120, 40)];
    [self.view addSubview:_pageControl];
    _pageControl.backgroundColor = [UIColor whiteColor];
    _pageControl.numberOfPages = 3;
    _pageControl.pageIndicatorTintColor = [UIColor blackColor];
    _pageControl.currentPageIndicatorTintColor = [UIColor blueColor];
    [_pageControl addTarget:self action:@selector(didClickPageAction:) forControlEvents:UIControlEventValueChanged];
    
    
}
//点击页码时产生事件
-(void)didClickPageAction:(UIPageControl *)sender
{
    //当前点击的页码
    NSInteger currentPage = sender.currentPage;
    //距离原点的差值
    CGPoint offset = _scrollView.contentOffset;
    offset.x = currentPage * _scrollView.frame.size.width;
    [_scrollView setContentOffset:offset animated:YES];
    
    
    
}
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{   //
    CGFloat offsetx = _scrollView.contentOffset.x;
    CGFloat pageWidth = _scrollView.frame.size.width;
    NSInteger pageName = offsetx/pageWidth;
    UIScrollView * currentView = [_scrollView.subviews objectAtIndex:pageName];
    UIImageView * image = (UIImageView *)[currentView  viewWithTag:100+pageName];
    
    
    
    return image;
    
    return nil;
}
//点击结束时页码的位置
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //取方法停止时x宽的大小
    CGFloat offsetx = _scrollView.contentOffset.x;
    NSLog(@"offsex = %f,",offsetx);
    //页宽
    CGFloat pageWidth = _scrollView.frame.size.width;
    //计算当前显示第几页
    NSInteger pageName = offsetx/pageWidth;
     NSLog(@"pageName = %ld",(long)pageName);
    
    
    
    //计算结果设置给Page
    _pageControl.currentPage = pageName;
   
 //   UIScrollView * currentScrollView = [_scrollView.subviews objectAtIndex:pageName];
   // NSLog(@"%@",_scrollView.subviews);
    UIScrollView * currentScrollView = (UIScrollView *)[_scrollView viewWithTag:200+pageName];
    currentScrollView.zoomScale = 1.0;

    
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值