使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果

利用UIScrollView的滚动效果来实现,先上图:

实现过程是:在viewController里先增加UIScrollView和UIPageControl:

-(void) loadView {
    [super loadView];
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,480)];
    UIPageControl* pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 438, 320, 42)];
    self.scrollView = scrollView;
    self.pageControl = pageControl;
    self.pageControl.opaque = 1;
    [self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:self.scrollView];
    [self.view addSubview:self.pageControl];

}

然后来初始化UIScrollView:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.contentList = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
    NSMutableArray* controllers = [[NSMutableArray alloc] init];
    for (unsigned i = 0 ; i < kNumberOfPages; i++) {
        [controllers addObject:[NSNull null]];
    }

    self.viewControllers = controllers;
    self.scrollView.pagingEnabled = YES;

    //contentSize是内容的宽度
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width*kNumberOfPages,
                                             self.scrollView.frame.size.height);

    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    self.scrollView.scrollsToTop = NO;
    self.scrollView.delegate = self;

    self.pageControl.numberOfPages = kNumberOfPages;
    self.pageControl.currentPage = 0;

    [self loadScrollViewWithPage:0];
    [self loadScrollViewWithPage:1];
    // Do any additional setup after loading the view.
}

//UserImageViewController里仅仅有一个UIImageView
-(void) loadScrollViewWithPage:(int)page{
    if (page < 0) {
        return;
    }else if(page >= kNumberOfPages) {
        //do some thing,like jump to other screen

        CalendarViewExample* calendarView = [[CalendarViewExample alloc] init];
        [self presentViewController:calendarView animated:YES completion:^{}];
        return;
    }

    UserImageViewController* controller = [self.viewControllers objectAtIndex:page];
    if ((NSNull*)controller == [NSNull null]) {
        controller = [[UserImageViewController alloc] init];
        [self.viewControllers replaceObjectAtIndex:page withObject:controller];
    }

    if (controller.view.superview == nil) {
        CGRect frame = self.scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [self.scrollView addSubview:controller.view];

        NSString* name =[self.contentList objectAtIndex:page];
        NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"jpg"];
        controller.numberImage.image = [UIImage imageWithContentsOfFile:path];

    }
}

假设用手指来滚动的时候:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView{
    if (pageControlUsed) {

        return;
    }

    CGFloat pageWidth = scrollView.frame.size.width;
    //page表示当前滚动哪一页的标识
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth)+1;

    self.pageControl.currentPage = page;

    [self loadScrollViewWithPage:page-1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page+1];

}

-(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    pageControlUsed = NO;
}

-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    pageControlUsed = NO;
}

然后假设切换到下一页:

-(void) changePage:(id)sender{
    int page = self.pageControl.currentPage;
    NSLog(@"chanepage page=%d",page);

    [self loadScrollViewWithPage:page-1];
    [self loadScrollViewWithPage:page];

    CGRect frame = self.scrollView.frame;
    frame.origin.x = frame.size.width*page;
    frame.origin.y = 0;
    [self.scrollView scrollRectToVisible:frame animated:YES];

    pageControlUsed = YES;
}

代码能够在http://download.csdn.net/detail/baidu_nod/7547659下载

时间: 2024-12-29 11:15:02

使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果的相关文章

使用UIScrollView和UIPageControl做一个可以用手势来切换图片的效果

利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先加入UIScrollView和UIPageControl: -(void) loadView { [super loadView]; UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,480)]; UIPageControl* pageControl = [[UIPageCont

使用plupload做一个类似qq邮箱附件上传的效果

公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可以添加多个附件,也可一个都不添加 以其中一个为例:(文件保存到了数据库中),有关plupload的内容可参考:http://www.360doc.com/content/14/0714/03/552866_394228686.shtml 首先是po package cn.com.plupload.p

扩展一个boot的插件—tooltip&amp;做一个基于boot的表达验证

在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. 其实挺简单的,主要是考究代码阅读的能力. boot的代码写的很简单,能省略“;”的地方就省略掉了,而且他的闭包也很有意思 +function($){ }(jQuery); 这种写法等同于 (function($){ })(jQuery); 少些一个符号,比较节俭. 他的对外接口写的就比较正常了:

如果做一个循环滚动的UIScrollView

先上效果图: 先初始化: - (void)viewDidLoad { //添加最后一张图 用于循环 int length = 4; NSMutableArray *tempArray = [NSMutableArray array]; for (int i = 0 ; i < length; i++) { NSString* str = [NSString stringWithFormat:@"title%d",i]; [tempArray addObject:str]; } N

iOS:UI系列之UIScrollview和UIPagecontrol

转眼间,又是一天,就这样忙忙碌碌的一天一天的过着, 不过还好,不是浑浑噩噩的,也算是小有所成,劳有所获吧,嘿嘿! 好了,到了总结的时间啦, 下面就为大家简单讲解下我今天学习的内容吧,希望对各位都有所帮助吧,同时也是对自己的一种激励,最终实现共赢吧 嘿嘿! 首先,在上课时间我们先简单讲述了UIScrollView, 它是一个滚动视图,继承于UIView,他没有自己的初始化方法,所以要用到父类的创建方法下面就为大家简单说明下其创建过程哈: UIScrollView *scrollView = [[U

UIScrollView 和UIPageControl 实现app启动滑动图

一.使用NSUserDefaults 判断滑动图有没有出现过,加载滑动图 NSUserDefaults 简介: NSUserDefaults可以将数据永久的保存在手机中,他是一个单例,用起来很方便,所以很适合用于保存简单的数据和为数据做标记 你可以选择在AppDelegate.m中的didFinishLaunchingWithOptions 方法或者"初始界面"(加载的第一个viewController)的 viewDidLoad 方法中进行判断滑动图是否出现过,写上代码: NSUse

UIScrollView和UIPageControl

UIScrollView和UIPageControl 一般配合使用 //创建一个滑动/滚动的视图,大小和当前视图大小一样(可以自定义大小)    UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:self.view.bounds];    //设置显示内容区域的大小,宽度是当前视图的6倍(可以自定义大小),    scrollView.contentSize=CGSizeMake(self.view.frame.size.w

iOS基础——通过案例学知识之LaunchScreen、APPIcon、StatusBar、UIScrollView、UIPageControl

iOS基础--通过案例学知识之LaunchScreen.APPIcon.StatusBar.UIScrollView.UIPageControl 今天要实现的案例效果图 一.LaunchScreen 1.设置程序的LaunchScreen 在项目配置文件中配置启动页,并且在LaunchScreen.storyboard中进行布局 2.设置LaunchScreen时间 //单位:秒 [NSThread sleepForTimeInterval:1.5f]; 二.APPIcon 1.命名规则:iOS

做一个行万里路的旅者

         可以少读几页书,但绝不能少行一程路.人生不能仅仅是读书和写程序,你的视野应当更广阔一些.    一. 编程为何? 我已经有好一段时间,甚至可以说,大部分时间,是为了找工作而编程学技术了.为了找一份“高薪稳定”的工作,去苦读和钻研一大堆的技术,人事不经,甚至有点麻木迟钝.这并不是说钻研技术不对,问题是,为了什么而去做这件事情.为了编程而钻研技术,却渐渐忘了,为了什么而编程. 让我仔细回想一下,当初是怎么跑到这里来的呢? 显然不是被那一大堆的技术吸引过来的,也不是为了所谓的“高薪”