滚动视图(一)

   //创建滚动视图对象
    UIScrollView * scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(60, 100, 200, 300)];
   
   scrollView.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:scrollView];
    [scrollView release];
    UIScrollView的frame,设定了展示滚动视图窗口的位置和大小(固定的相框)
    //contentSize,设定了内容视图(contentView)的大小
    //contentSize默认和frame.size一致,即不能滚动
    //如果想实现视图滚动效果,必须设置contentSize
    //contentSize的width 大于frame.size.width
    //contentSize的height 大于frame.size.height
     scrollView.contentSize = CGSizeMake(320, 480);
    
    
    //创建UIImageView对象
    UIImageView * showImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    showImageView.image = [UIImage imageNamed:@"iphone"];
    //添加到滚动视图上
    [scrollView addSubview:showImageView];
    [showImageView release];
    //自动读取图片的宽高
    scrollView.contentSize = showImageView.image.size;
    //scrollView的原点和scrollView原点的偏移量
    //crollView向scrollView原点左侧为正方向,x为正值
    //crollView向scrollView原点左侧为上方向,y为正值  默认为0
    //scrollView.contentOffset = CGPointMake(50, 50);
    
    scrollView.contentInset = UIEdgeInsetsMake(50, 50, 0, 0);




- (void)viewDidLoad
{    scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(60, 100, 200, 283)];
    [self.view addSubview:scrollView];
    [scrollView release];
    scrollView.contentSize = CGSizeMake(200*3, 283);
    scrollView.delegate = self;
    
    //scrollView.pagingEnabled = YES;
   
    scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    
    _pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(100, 400, 120, 40)];
    [self.view addSubview:_pageControl];
    _pageControl.backgroundColor = [UIColor blueColor];
    _pageControl.numberOfPages = 3;
    //除当前点之外的其他点的颜色
    _pageControl.pageIndicatorTintColor = [UIColor blackColor];
    //当前点的颜色
    _pageControl.currentPageIndicatorTintColor = [UIColor yellowColor];
    //默认当前页码
   // _pageControl.currentPage = 2;
    [_pageControl addTarget:self action:@selector(didClickPageAction:) forControlEvents:UIControlEventValueChanged];
    [_pageControl release];
    
        //是否可以滚动
    //scrollView.scrollEnabled = NO;
    //方向锁 开始在确定一个方向滑动后,不可以向别的方向滑动
    //scrollView.directionalLockEnabled = YES;
    //scrollView.scrollsToTop = NO;
    //回弹
    //scrollView.bounces = YES;
    //水平回弹
    //scrollView.alwaysBounceHorizontal = NO;
    //垂直回弹
   // scrollView.alwaysBounceVertical = NO;
    //分页效果
    scrollView.pagingEnabled = YES;
    
    //指示条颜色
    //scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    //只显示右边的指示条
    //scrollView.showsHorizontalScrollIndicator = YES;
    //指示条消失不见
    //scrollView.showsVerticalScrollIndicator = NO;
    
    for (int i = 0; i < 3; i++) {
        
        
        scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(200*i, 0, 200, 283)];
        [scrollView addSubview:scroll];
        [scroll release];
       // scroll.tag = 100+i;
        scroll.contentSize = CGSizeMake(200, 283);

        scroll.maximumZoomScale = 2.0;
        scroll.minimumZoomScale = 0.5;
        UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"h%d.jpeg",i+1]];
        UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 283)];
        imageView.image = image;
        imageView.tag = 100 +i;
        [scroll addSubview:imageView];
        scroll.delegate = self;
        [imageView release];
    }
   // scrollView.contentOffset = CGPointMake(0, 283);
    
    
}
-(void)didClickPageAction:(UIPageControl *)sender
{
    //当前点击的Page
    NSInteger currentPage = sender.currentPage;
    //设置scrollView的
    
    CGPoint offset = scrollView.contentOffset;
    offset.x = currentPage * 200;
    //scrollView.contentOffset = offset;
    [scrollView setContentOffset:offset animated:YES];
   
   
}
//指定需要缩放的视图对象

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scroll1
{
    
    
   
    
    //找出子视图
   // NSLog(@"subviwe = %@",scrollView.subviews);
    //根据当前停留的页数,指定对应的视图对象
    
    

    
    CGFloat offsetx = scrollView.contentOffset.x;
    //页宽
    CGFloat pageWidth = 200;
    //计算当前显示第几页
    NSInteger pageName = offsetx/pageWidth;
    
    UIScrollView * a = [scrollView.subviews objectAtIndex:pageName];
    
    UIImageView * image = (UIImageView *)[a  viewWithTag:100+pageName];
    
    return image;
    
    return nil;


}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog(@"只要view有滚动(不管是拖、拉、放大、缩小等导致)都会执行此函数%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"view将要开始减速,view滑动之后有惯性%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    NSLog(@"将要结束拖拽,手指已拖动过view并准备离开手指的那一刻,注意:当属性pagingEnabled为YES时,此函数不被调用%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    NSLog(@"有动画时调用%s,%d",__FUNCTION__,__LINE__);
}
-(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    NSLog(@"%s,%d",__FUNCTION__,__LINE__);
}
-(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    NSLog(@"%s,%d",__FUNCTION__,__LINE__);
    return YES;
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    NSLog(@"将要开始拖拽,手指已经放在view上并准备拖动的那一刻%s,%d",__FUNCTION__,__LINE__);
}
//scrollView停止滚动时,计算当前显示页数
//在"减速停止"这个代理方法中,计算当前显示第几页
//先获取contentoffset.x 在除以页宽,得到显示页数,最后,计算得到的正在显示的页数,设置给pageControll的currentPage
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scroll
{
    NSLog(@"view已经停止滚动%s,%d",__FUNCTION__,__LINE__);
    //取方法停止时x宽的大小
    CGFloat offsetx = scrollView.contentOffset.x;
    //页宽
    CGFloat pageWidth = 200;
    //计算当前显示第几页
    NSInteger pageName = offsetx/pageWidth;
    //计算结果设置给Page
    _pageControl.currentPage = pageName;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值