您的位置:首页 > 其它

实现一个简单的滚动视图

2015-05-12 19:14 218 查看
程序的大部分

@interface BIDViewController : UIViewController

//可滚动页面

@property (retain, nonatomic) UIScrollView *scrollView;

//页点

@property (retain, nonatomic) UIPageControl *pageControl;

//保存图片的数组

@property (retain, nonatomic) NSMutableArray *imageArray;

@end

@implementation BIDViewController

- (void)viewDidLoad

{

[super viewDidLoad];

//创建可滑动视图

UIScrollView *tempView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 460)];

self.scrollView = tempView;

[tempView release];

//创建页点

UIPageControl *tempPage = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 420, 320, 36)];

[tempPage setBackgroundColor:[UIColor clearColor]];

[tempPage setAlpha:1];

self.pageControl = tempPage;

//[tempPage release];

//初始化数组,将图片压入数组

self.imageArray = [NSMutableArray arrayWithObjects:

[UIImage imageNamed:@"html5.png"],

[UIImage imageNamed:@"jQuery.png"],

[UIImage imageNamed:@"iphone1.png"],

[UIImage imageNamed:@"iphone2.png"], nil];

//将滚动视图和翻页视图添加到视图中

[self.view addSubview:self.scrollView];

[self.view addSubview:self.pageControl];

self.view.backgroundColor = [UIColor whiteColor];

[self createsCrollView:nil];

}

#pragma ------创建视图区域----------

//创建滚动视图区域

- (void)createsCrollView:(id)sender

{

//设置委托

self.scrollView.delegate = self;

//将是否取消对内容视图触摸的反应设为NO

self.scrollView.canCancelContentTouches = NO;

//设置滚动条类型

self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

//是否可以缩放

self.scrollView.scrollEnabled = YES;

//是否可以进行页面切换

self.scrollView.pagingEnabled = YES;

NSUInteger page = 0;//为了记录页数

int originX = 0;

//填充滑动视图内容

for (UIImage *image in self.imageArray) {

//首先创建一个视图

UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectZero];

//为这个图片设置适当位置

CGRect rect ;

rect.origin.x = originX;

rect.origin.y = 0;

rect.size.width = self.scrollView.frame.size.width;

rect.size.height = self.scrollView.frame.size.height;

imageview.frame = rect;

//设置图片为背景

imageview.image = image;

//添加到视图中

[self.scrollView addSubview:imageview];

[imageview release];

//确定下张图片开始的x坐标

originX += self.scrollView.frame.size.width;

//记录页数

page++;

}

//设置总页数

self.pageControl.numberOfPages = page;

//设置默认页为首页

self.pageControl.currentPage = 0;

self.pageControl.tag = 100;

//为页数控制关联方法

[self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

//显示适当区域

[self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.frame.size.height)];

}

//点击小点切换页面

- (void)changePage:(id)sender

{

//创建一个区域

CGRect rect;

rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;

rect.origin.y = 0;

rect.size.width = self.scrollView.frame.size.width;

rect.size.height = self.scrollView.frame.size.height;

//设置滚动视图的可视区域

[self.scrollView scrollRectToVisible:rect animated:YES];

}

//重写滑动结束后的反应,就是把pageConteol的当前页跟随滑动而动

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

//取滚动视图区域的宽

float orginX = self.scrollView.frame.size.width;

//利用当前视图显示区域到view.frame的偏移量,来换算获取当前处在第几页

int page = ((self.scrollView.contentOffset.x - orginX))/orginX +1;

//当前页改为这一页。

self.pageControl.currentPage = page;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: