zoukankan      html  css  js  c++  java
  • UIScrollView和UIPageControl的使用(实现图片的循环滚动)

    第一、UIScrollView的基本概念

     
    是一个可以选择滑动的视图,用于显示更多的内容,可以通过手势放大或者缩小显示更多的内容。
     
    有两个子类一个是UITableView,另一个是UITextView
     
    第二、基本属性:
     
        scrollView=[[[UIScrollViewalloc] initWithFrame:CGRectMake(0,0, 320,250)] autorelease];
     
        scrollView.backgroundColor=[UIColorredColor];
     
        //设置内容的大小
     
        scrollView.contentSize=CGSizeMake(320*4,250);
     
        //当超出边界时表示是否可以反弹
     
        scrollView.bounces=YES;
     
        //是否分页
     
        scrollView.pagingEnabled=YES;
     
        //是否滚动
     
        scrollView.scrollEnabled=YES;
     
        //是否显示边界
     
        scrollView.showsHorizontalScrollIndicator=YES;
     
        //设置indicator的风格
     
        scrollView.indicatorStyle=UIScrollViewIndicatorStyleWhite;
     
     1 #import <UIKit/UIKit.h>
     2 #define WIDTH self.view.bounds.size.width
     3 #define HEIGHT self.view.bounds.size.height
     4 @interface ViewController : UIViewController<UIScrollViewDelegate>
     5 @property(strong,nonatomic) UIScrollView *scollView;
     6 @property(strong,nonatomic) UIPageControl *pageControl;
     7 @property(strong,nonatomic) NSMutableArray *imageArray;//存储图片的集合
     8 @property(assign,nonatomic) int currentPage;//当前页码
     9 @property(strong,nonatomic) UIImageView *firstImage;//第一张图片
    10 @property(nonatomic,strong) UIImageView * secondImage;//第二张图片
    11 @property(nonatomic,strong) UIImageView * thirdImage;//第三张图片
    12 @end
     1 #import "ViewController.h"
     2 
     3 @interface ViewController ()
     4 
     5 @end
     6 
     7 @implementation ViewController
     8 
     9 - (void)viewDidLoad {
    10     [super viewDidLoad];
    11     //设置每张视图的大小
    12     self.scollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 30, WIDTH, (HEIGHT-30)/2)];
    13     self.scollView.backgroundColor=[UIColor grayColor];
    14     //设置内容面板有几张
    15     self.scollView.contentSize=CGSizeMake(WIDTH*3, 0);
    16     //设置分页
    17     self.scollView.pagingEnabled=YES;
    18     //指定代理
    19     self.scollView.delegate=self;
    20     //隐藏滚动条
    21     self.scollView.showsHorizontalScrollIndicator=NO;
    22     [self.view addSubview:self.scollView];
    23     
    24     //设置分页的位置
    25     self.pageControl=[[UIPageControl alloc] initWithFrame:CGRectMake(WIDTH-100, HEIGHT/2-30, 100, 40)];
    26     //分页
    27     self.pageControl.numberOfPages=4;
    28     //设置当前页
    29     self.pageControl.currentPage=0;
    30     //指定页码颜色
    31     self.pageControl.currentPageIndicatorTintColor=[UIColor redColor];
    32     self.pageControl.pageIndicatorTintColor=[UIColor greenColor];
    33     [self.view addSubview:self.pageControl];
    34     
    35     //初始化存储图片的集合
    36     self.imageArray=[NSMutableArray arrayWithCapacity:4];
    37     for (int i=1; i<5; i++) {
    38         UIImage *image=[UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
    39         [self.imageArray addObject:image];
    40     }
    41     NSLog(@"%@",self.imageArray);
    42     self.firstImage=[[UIImageView alloc] init];
    43     self.secondImage=[[UIImageView alloc] init];
    44     self.thirdImage=[[UIImageView alloc] init];
    45     //当前页码为0
    46     self.currentPage=0;
    47     [self reloadImage];
    48     
    49 }
     1 -(void)reloadImage
     2 {
     3     //第一种情况 第一页
     4     if (self.currentPage==0) {
     5         self.firstImage.image=[self.imageArray lastObject];
     6         self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
     7         self.thirdImage.image=[self.imageArray objectAtIndex:self.currentPage+1];
     8     }else if(self.currentPage==self.imageArray.count-1)
     9     {
    10        //第二种情况
    11         self.firstImage.image=[self.imageArray objectAtIndex:self.currentPage-1];
    12         self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
    13         self.thirdImage.image=[self.imageArray objectAtIndex:0];
    14     }else
    15     {
    16        //第三种情况
    17         self.firstImage.image=[self.imageArray objectAtIndex:self.currentPage-1];
    18         self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
    19         self.thirdImage.image=[self.imageArray objectAtIndex:self.currentPage+1];
    20     }
    21     
    22     self.firstImage.frame=CGRectMake(0, 0, WIDTH, (HEIGHT-30)/2);
    23     self.secondImage.frame=CGRectMake(WIDTH, 0, WIDTH, (HEIGHT-30)/2);
    24     self.thirdImage.frame=CGRectMake(WIDTH*2, 0, WIDTH, (HEIGHT-30)/2);
    25     
    26     [self.scollView addSubview:self.firstImage];
    27     [self.scollView addSubview:self.secondImage];
    28     [self.scollView addSubview:self.thirdImage];
    29     
    30     self.scollView.contentOffset=CGPointMake(WIDTH, 0);
    31 }
     1 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
     2 {
     3     float x=self.scollView.contentOffset.x;
     4     //向左翻
     5     if (x<0||x==0) {
     6         if (self.currentPage==0) {
     7             self.currentPage=(int)self.imageArray.count-1;
     8         }else
     9         {
    10             self.currentPage--;
    11         }
    12     }
    13     //向右
    14     if (x>WIDTH*2||x==WIDTH*2) {
    15         if (self.currentPage==(int)self.imageArray.count-1) {
    16             self.currentPage=0;
    17         }else
    18         {
    19             self.currentPage++;
    20         }
    21     }
    22     self.pageControl.currentPage=self.currentPage;
    23     [self reloadImage];
    24     
    25 }
  • 相关阅读:
    08月24日总结
    08月23日总结
    08月22日总结
    装饰器
    卢菲菲最强大脑记忆训练法全套教程 01
    LeetCode 704 二分查找
    LeetCode 1480 一维数组的动态和
    NIO 总结
    LeetCode 881 救生艇
    url的组成部分
  • 原文地址:https://www.cnblogs.com/zhaochaobin/p/5269909.html
Copyright © 2011-2022 走看看