UIPageControl+UIScrollView

UIPageControl继承了UIControl基类,默认属于活动控件,它可以与用户进行交互,经常与UIScrollerView结合使用,在实际项目也是经常使用的。当把UIScrollView的pagingEnabled设置为YES之后,UIScrollView至少每次滚动一页。此时通常结合UIPageControl使用,UIPageControl控件会充当两个功能。
使用UIPageControl显示当前的UIScrollView正在显示第几页。
当用户点击UIPageControl控件时程序控制UIScrollView自动滚动到相应的页面。
为将要显示的图片们进行初始化:
coverList=[NSArray arrayWithObjects:@”11.png”,@”22.png”,@”33.png”, nil];
获取图片的个数以备后用:
创建UIScrollPane对象
scrollView=[[UIScrollView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
创建背景颜色
scrollView.backgroundColor=[UIColor grayColor];
设置可以手动挑动图片
scrollView.pagingEnabled=YES;
设置UIScrollPane的contentSize—就是它可滚动区域的大小
scrollView.contentSize=CGSizeMake(CGRectGetWidth(scrollView.frame)*numberPages, CGRectGetHeight(scrollView.frame));
scrollView.showsHorizontalScrollIndicator=NO;
scrollView.showsVerticalScrollIndicator=NO;
scrollView.scrollsToTop=NO;
设置该控件委托对象
scrollView.delegate=self;
[self.view addSubview:scrollView];
接下来初始化UIPage
pageControl=[[UIPageControl alloc]init];
设置未选中时圆点的颜色
pageControl.pageIndicatorTintColor=[UIColor grayColor];
设置选中高亮时圆点的颜色
pageControl.currentPageIndicatorTintColor=[UIColor redColor];
设置默认在页面数
pageControl.currentPage=0;
设置UIPageControl总共包含多少页
pageControl.numberOfPages=numberPages;
pageControl.hidesForSinglePage=YES;
监听事件:
[pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
初始化时默认只需加载、显示第一页的View
[self loadScrollViewWithPage:0];
加载UIScrollPage的指定页对应的控制器
-(void)loadScrollViewWithPage:(NSUInteger)page
{
if (page>=coverList.count) {
return;
}
WXPageController *contorller=[viewControllers objectAtIndex:page];
if ((NSNull *)contorller==[NSNull null]) {
contorller=[[WXPageController alloc]initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:contorller];
}
if (contorller.view.superview==nil) {
CGRect frame=scrollView.frame;
frame.origin.x=CGRectGetWidth(frame)*page;
frame.origin.y=0;
contorller.view.frame=frame;
contorller.image.image = [UIImage imageNamed:[coverList objectAtIndex:page]]; [self addChildViewController:contorller];
[scrollView addSubview:contorller.view];
}
}
来自UIScrollViewDelegate的方法,当用户滚动了UIScrollView后激发该方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWith=CGRectGetWidth(scrollView.frame);
NSUInteger page=floor((scrollView.contentOffset.x-pageWith/2)/pageWith)+1;
pageControl.currentPage=page;
[self loadScrollViewWithPage:page-1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page+1];

}

事件监听,当用户更改UIPageControl的选中页激发方法
-(void)changePage:(id)sender
{

NSInteger page=[sender currentPage];
CGRect bounds=scrollView.bounds;
bounds.origin.x=CGRectGetWidth(bounds)*page;
bounds.origin.y=0;
[scrollView scrollRectToVisible:bounds animated:YES];
[self loadScrollViewWithPage:page - 1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page + 1];

}
在WXPageController中声明UIImageView变量和声明并实现
-(id)initWithPageNumber:(NSInteger)pageNumber
{
self=[super initWithNibName:nil bundle:nil];
if (self) {
self.image=[[UIImageView alloc]initWithFrame:CGRectMake(0, 90, CGRectGetWidth(self.view.frame), 320)];
self.image.contentMode=UIViewContentModeScaleAspectFit;
[self.view addSubview:self.image];
}
return self;
}方法
最后分享一下,我的模板代码:http://download.csdn.net/detail/it_ds/8578789

时间: 2024-10-03 13:17:26

UIPageControl+UIScrollView的相关文章

UIScrollView 和 UIPageControl 实现启动滑动图

一.使用NSUserDefaults 判断滑动图有没有出现过,加载滑动图 NSUserDefaults 简介: NSUserDefaults可以将数据永久的保存在手机中,他是一个单例,用起来很方便,所以很适合用于保存简单的数据和为数据做标记. 更多的关于NSUserDefaults的介绍请看:NSUserDefaults 简介 你可以选择在AppDelegate.m中的didFinishLaunchingWithOptions 方法或者"初始界面"(加载的第一个viewControll

iOS图片轮播UIScrollView+UIPageControl

该方法实现了图片的轮播效果: pictureLoop 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110

uiscrollview-为什么我自己将UIScrollView 和 UIPageControl 组合的MyView 不能拖拽

问题描述 为什么我自己将UIScrollView 和 UIPageControl 组合的MyView 不能拖拽 我自定义的MyView (instancetype)initWithImageList:(NSArray*) imgArr andFrame:(CGRect) frame { self = [super init]; self.userInteractionEnabled = YES; if (self) { [self createScrollView:imgArr andFrame

iOS开发UI篇—UIScrollView控件实现图片轮播

一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; 5 /** 6 * 页码 7 */ 8 @property (weak, nonato

UIKit 框架之UIPageControl

// // ViewController.m // UIPageControl // // Created by City--Online on 15/5/19. // Copyright (c) 2015年 XQB. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(nonatomic,strong) UIPageControl *pageControl;

iOS开发中使用UIScrollView实现图片轮播和点击加载_IOS

UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 二.实现代码 storyboard中布局 代码: 复制代码 代码如下: #import "YYViewController.h" @interface YYViewController () <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; /**  *  页码  */ @pro

iOS利用UIScrollView实现无限滚动效果_IOS

前言 众所周知UIScrollView 的无限滚动主要应用在图片轮播器.欢迎界面等场景.它的原理是在要显示的图片前后各加一张图片即在第一张图片之前放最后一张图片,在最后一张图片之后放第一张图片,然后在滚动到边缘的时候,巧妙的过渡一下就可以"瞒天过海","以假乱真"的造成无限滚动的假象.网络上有很多只用三张或两张图片实现的方法,效率比这个方法高,但实现起来稍微麻烦一点,有兴趣的可以去深入研究. 实现步骤       1.根据需求准备几张图片,在网上找了5张图片,分别命

iOS开发中使用UIScrollView实现无限循环的图片浏览器_IOS

一.概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件都介绍一遍确实没有必要,所谓授人以鱼不如授人以渔,这里会尽可能让大家明白其中的原理,找一些典型的控件进行说明,这样一来大家就可以触类旁通.今天我们主要来看一下UIScrollView的内容: UIView UIScrollView 实战--图片浏览器 二.UIView 在熟悉UIScrollView之前很有必要说一下UIView的内容.

UIScrollView 新手教程

本文讲的是UIScrollView 新手教程, Ray的温馨提示:这是本站原先 Objective-C 热门教程的 Swift 升级版.Corinne Krych 将教程升级到了Swift, iOS 9 和 Xcode 7.1.1:原文由教程团队成员 Matt Galloway 编写.阅读愉快! UIScrollView 是 iOS 中最灵活和有用的控件之一.它是十分流行的 UITableView 控件的基础,能够友好地展示超过一屏的内容.在这份 UIScrollView 教程中,通过构建一个类