UIScrollView的简单使用

原创 2013年12月04日 18:24:56
#import <UIKit/UIKit.h>

@interface ScrollView : UIViewController<UIScrollViewDelegate>
{
    NSMutableArray * imageArray;
    NSTimer *timer;
    int pageNum;
}
@property (nonatomic,strong)UIScrollView *myScrollView;
@property (nonatomic,strong)UIImageView *myImageView;
@property (nonatomic,strong)UIPageControl *pageControl;
-(void)configScrollView;
-(void)initImageArray;
@end
#import "ScrollView.h"

@implementation ScrollView
@synthesize myImageView=_myImageView;
@synthesize myScrollView=_myScrollView;
@synthesize pageControl=_pageControl;

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self initImageArray];
    [self configScrollView];
     [self.view addSubview:self.myScrollView];
}
-(void)initImageArray
{

   imageArray =[[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"1.jpg"],[UIImage imageNamed:@"2.jpg"],[UIImage imageNamed:@"3.jpg"],nil];
}
-(void)configScrollView  
{    
    CGRect scrollViewRect=self.view.bounds;
    self.myScrollView=[[UIScrollView alloc]initWithFrame:scrollViewRect];    
    self.myScrollView.delegate=self; 
     self.myScrollView.pagingEnabled=YES;
    
    UIImageView *firstView=[[UIImageView alloc] initWithImage:[imageArray lastObject]];  
    CGFloat Width=self.myScrollView.frame.size.width;  
    CGFloat Height=self.myScrollView.frame.size.height;  
    firstView.frame=CGRectMake(0, 0, Width, Height);  
    [self.myScrollView addSubview:firstView];  
    //set the last as the first  
    
    for (int i=0; i<[imageArray count]; i++) {  
        UIImageView *subViews=[[UIImageView alloc] initWithImage:[imageArray objectAtIndex:i]];  
        subViews.frame=CGRectMake(Width*(i+1), 0, Width, Height);  
        [self.myScrollView addSubview: subViews];  
    }  
    
    UIImageView *lastView=[[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]];  
    lastView.frame=CGRectMake(Width*(imageArray.count+1), 0, Width, Height);  
    [self.myScrollView addSubview:lastView];  
    //set the first as the last  
    
    [self.myScrollView setContentSize:CGSizeMake(Width*(imageArray.count+2), Height)];  
    [self.view addSubview:self.myScrollView];  
    [self.myScrollView scrollRectToVisible:CGRectMake(Width, 0, Width, Height) animated:NO];  
 
    CGRect pageControlFrame=CGRectMake(100, 160, 78, 36);  
    self.pageControl=[[UIPageControl alloc]initWithFrame:pageControlFrame];
    self.pageControl.numberOfPages=imageArray.count;   
    //    self.pageControl.backgroundColor=[UIColor blueColor];//背景  
    self.pageControl.currentPage=0;  
    self.pageControl.enabled=YES;  
    [self.view addSubview:self.pageControl];  
    [self.pageControl addTarget:self action:@selector(pageTurn:)forControlEvents:UIControlEventValueChanged];  
    
    timer=[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(scrollToNextPage:) userInfo:nil repeats:YES];  
    
} 
//前后各重复一张实现循环显示
-(void)scrollToNextPage:(id)sender
{
    pageNum=self.pageControl.currentPage;
    CGSize scrolViewSize=self.myScrollView.frame.size;
    CGRect rect=CGRectMake((pageNum+2)*scrolViewSize.width, 0, scrolViewSize.width, scrolViewSize.height);
    [self.myScrollView scrollRectToVisible:rect animated:NO];  
    pageNum++;
    if (pageNum==[imageArray count]) {
        CGRect newRect=CGRectMake(scrolViewSize.width, 0, scrolViewSize.width, scrolViewSize.height);
        [self.myScrollView scrollRectToVisible:newRect animated:NO];
    }
}

//拖动和分页
//- (void)viewDidLoad
//{
//    [super viewDidLoad];
//    UIImage *image1=[UIImage imageNamed:@"1.jpg"];
//    UIImage *image2=[UIImage imageNamed:@"2.jpg"];
//    UIImage *image3=[UIImage imageNamed:@"3.jpg"];
//    
//    CGRect scrollViewRect=self.view.bounds;
//    
//    self.myScrollView=[[UIScrollView alloc]initWithFrame:scrollViewRect];
//    self.myScrollView.pagingEnabled=YES;
//    
//    self.myScrollView.contentSize=CGSizeMake(scrollViewRect.size.width*3.0, scrollViewRect.size.height);
//    [self.view addSubview:self.myScrollView];
//    
//    CGRect imageViewRect=self.view.bounds;
//    UIImageView *imageView1=[[UIImageView alloc]initWithFrame:imageViewRect];
//    imageView1.image=image1;
//    [self.myScrollView addSubview:imageView1];
//    
//    imageViewRect.origin.x+=imageViewRect.size.width;
//    UIImageView *imageView2=[[UIImageView alloc]initWithFrame:imageViewRect];
//    imageView2.image=image2;
//    [self.myScrollView addSubview:imageView2];
//    
//    imageViewRect.origin.x+=imageViewRect.size.width;
//    UIImageView *imageView3=[[UIImageView alloc]initWithFrame:imageViewRect];
//    imageView3.image=image3;
//    [self.myScrollView addSubview:imageView3];
//}
//缩放
//-(void)viewDidLoad
//{
//    [super viewDidLoad];
//    CGRect scrollViewRect=self.view.bounds;
//    self.myScrollView=[[UIScrollView alloc]initWithFrame:scrollViewRect];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
//    self.myScrollView.contentSize=scrollViewRect.size;
//    [self.view addSubview:self.myScrollView];
//    
//    UIImage *image=[UIImage imageNamed:@"zoom.jpg"];
//    CGRect imageViewRect=CGRectMake(0, 0, image.size.width, image.size.height);
//    
//  self.myImageView=[[UIImageView alloc]initWithFrame:imageViewRect];
//    self.myImageView.image=image;
//    [self.myScrollView addSubview:self.myImageView];
//    
//    [self.myScrollView setMinimumZoomScale:1.0];
//    [self.myScrollView setMaximumZoomScale:5.0];
//    
//    [self.myScrollView setDelegate:self];
//}
//
//-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
//{
//    return self.myImageView;
//}
//floor(x)返回不大于x的最大整数        
-(void)scrollViewDidScroll:(UIScrollView *)scrollView  
{  
    CGFloat pageWidth=self.myScrollView.frame.size.width;   
    int currentPage=floor((self.myScrollView.contentOffset.x-pageWidth/2)/pageWidth)+1;  
    if (currentPage==0) {  
        self.pageControl.currentPage=imageArray.count-1;  
    }else if(currentPage==imageArray.count+1){  
        self.pageControl.currentPage=0;  
    }  
    self.pageControl.currentPage=currentPage-1;  
    
}  
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView  
{  
    [timer invalidate];  
}  
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate  
{  
    timer=[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(scrollToNextPage:) userInfo:nil repeats:YES];  
}  
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView  
{  
    CGFloat pageWidth=self.myScrollView.frame.size.width;  
    CGFloat pageHeigth=self.myScrollView.frame.size.height;  
    int currentPage=floor((self.myScrollView.contentOffset.x-pageWidth/2)/pageWidth)+1;  
    NSLog(@"the current offset==%f",self.myScrollView.contentOffset.x);  
    NSLog(@"the current page==%d",currentPage);  
    
    if (currentPage==0) {  
        [self.myScrollView scrollRectToVisible:CGRectMake(pageWidth*imageArray.count, 0, pageWidth, pageHeigth) animated:NO];  
        self.pageControl.currentPage=imageArray.count-1;  
        NSLog(@"pageControl currentPage==%d",self.pageControl.currentPage);  
        NSLog(@"the last image");  
        return;  
    }else  if(currentPage==[imageArray count]+1){  
        [self.myScrollView scrollRectToVisible:CGRectMake(pageWidth, 0, pageWidth, pageHeigth) animated:NO];  
        self.pageControl.currentPage=0;  
        NSLog(@"pageControl currentPage==%d",self.pageControl.currentPage);  
        NSLog(@"the first image");  
        return;  
    }  
    self.pageControl.currentPage=currentPage-1;  
    NSLog(@"pageControl currentPage==%d",self.pageControl.currentPage);  
    
}  
-(IBAction)pageTurn:(UIPageControl *)sender  
{  
    int pageNum=self.pageControl.currentPage;  
    CGSize viewSize=self.myScrollView.frame.size;  
    [self.myScrollView setContentOffset:CGPointMake((pageNum+1)*viewSize.width, 0)];  
//    NSLog(@"myscrollView.contentOffSet.x==%f",myScrollView.contentOffset.x);  
//    NSLog(@"pageControl currentPage==%d",self.pageControl.currentPage);  
    [timer invalidate];  
} 
@end




UIScrollView基本用法详解

UIScrollView基本用法详解
  • lvdezhou
  • lvdezhou
  • 2015年12月01日 16:11
  • 3894

Masonry适配——(4)UIScrollView的设置

UISCrollView在使用时,如果作为父视图包含多个子视图时,我们需要设置它的contentSize的大小,否则无法进行滚动显示。使用frame进行设置时,只需要令xxxScrollView.co...
  • super_man_ww
  • super_man_ww
  • 2016年10月20日 10:41
  • 574

iOS UIScrollView使用全解 滚动视图使用大全 swift3

iOS开发-- UIScrollView使用方法、属性详解
  • m0_38076563
  • m0_38076563
  • 2017年05月03日 22:27
  • 939

Storyboard/Xib使用UIScrollView进行自动布局注意点

在普通的view上直接添加一些控件是不需要做任何处理,只需要添加四周的约束即可,但是在使用ScrollView时这样操作便会出现问题。 原因就在于:我们通过代码时设置ScrollView需要设置其Co...
  • linfengwenyou
  • linfengwenyou
  • 2015年12月22日 16:24
  • 1973

IOS UIScrollView——用法详解

UIScrollView是用来在屏幕上显示那些在有限区域内放不下的内容。例如,在手机屏幕上显示内容丰富的网页或者很大的图片。在这种情况下,需要用户对屏幕内容进行拖动或缩放来查看屏幕或窗口区域外的内容。...
  • diqiuren223
  • diqiuren223
  • 2016年03月31日 23:05
  • 4608

UIScrollView 能够缩放的设置

实现UIScrollView的缩放,必须使maximumZoomScale(默认1.0)和minimumZoomScale(默认1.0)不同 ,并且需要在delegate中的viewForZoomin...
  • petyou123
  • petyou123
  • 2016年03月04日 15:37
  • 1122

Masonry适配——(4)UIScrollView的设置

UISCrollView在使用时,如果作为父视图包含多个子视图时,我们需要设置它的contentSize的大小,否则无法进行滚动显示。使用frame进行设置时,只需要令xxxScrollView.co...
  • potato512
  • potato512
  • 2016年04月23日 18:29
  • 6871

UIScrollView的简单使用

一、 基本使用 1. 作用 UIScrollView可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看   2. 常见属性 l CGSize contentSize :设置U...
  • llhandxy
  • llhandxy
  • 2015年06月29日 10:07
  • 209

关于UIScrollView的简单使用及介绍

一、基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 。 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScro...
  • Darling_qd
  • Darling_qd
  • 2015年02月28日 12:49
  • 316

UIScrollView在Autolayout自动布局中如何自适应滚动长度?

在iOS开发中,当使用UIScrollView展示内容时,内容超出屏幕长度的情况下,我们会通过UIScrollView的contentSize来设置它的滚动长度。 如果scrollView上的内容较多...
  • Dacian_zhou
  • Dacian_zhou
  • 2017年05月12日 16:17
  • 786
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UIScrollView的简单使用
举报原因:
原因补充:

(最多只允许输入30个字)