IOS之PageControl和ScrollView搭配

来源:互联网 发布:mac 恢复 不了 编辑:程序博客网 时间:2024/04/30 18:30

//

//  ScrollViewController.m

//  Scroll

//

//  Created by book mac on 13-1-20.

//  Copyright (c) 2013 __liric__. All rights reserved.

//


#import "ScrollViewController.h"


@implementation ScrollViewController

@synthesize myscrollview,mypagecontrol,array;


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.

}

- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    int pageCount =3;  // 设置页面数

    float pageControlHeight =18.0; // 设置pageControl高度

    CGRect myscroll =CGRectMake(0, 0,320, 260); 

    myscroll.size.height = myscroll.size.height - pageControlHeight;

    myscrollview = [[UIScrollViewalloc] initWithFrame:myscroll];//初始化myscrollview  

    myscrollview.pagingEnabled =YES; //是否翻页  

    myscrollview.backgroundColor = [UIColorredColor]; // myscrollview 背景红色  

    myscrollview.showsVerticalScrollIndicator =NO; // 垂直方向的滚动指示器 

    myscrollview.showsHorizontalScrollIndicator =NO;// 水平方向的滚动指示器

    myscrollview.indicatorStyle =UIScrollViewIndicatorStyleBlack;//滚动指示器的风格

    // myscrollview.directionalLockEnabled = YES; //只能一个方向滑动

    myscrollview.contentSize =CGSizeMake(myscrollview.frame.size.width*pageCount,myscrollview.frame.size.height);// 滚动区域,三个页面的宽度 

    myscrollview.delegate =self; // 委托,引用UIScrollViewDelegate协议

    

    CGRect pagerect = [self.viewbounds];

    pagerect.size.height = pageControlHeight; // pageControl18

    pagerect.origin.y = myscroll.size.height// x=0,y坐标即myscroll的高

    mypagecontrol = [[UIPageControlalloc]initWithFrame:pagerect]; // 初始化mypagecontrol

    mypagecontrol.backgroundColor = [UIColorblackColor]; // mypagecontrol 背景黑色

    mypagecontrol.numberOfPages = pageCount;//页面数为3

    mypagecontrol.currentPage =0; // 当前默认0为第一页

    [mypagecontroladdTarget:selfaction:@selector(change:)forControlEvents:UIControlEventValueChanged];// 触摸mypagecontrol触发change这个方法事件

    

    [self.viewaddSubview:myscrollview];

    [self.viewaddSubview:mypagecontrol];

    

    NSMutableArray * imgArr = [[NSMutableArrayalloc]initWithObjects:

                               [UIImageimageNamed:@"1933_1.jpg"],

                               [UIImageimageNamed:@"1933_2.jpg"],

                               [UIImageimageNamed:@"1933_3.jpg"],

                               nil]; // 数组放三张图片

    self.array = imgArr;

    for (int i =0; i<[arraycount]; i++) 

    {

        [selfloadScrollViewWithPage:i]; // 遍历数组


    }

}


- (void)loadScrollViewWithPage:(int)index

{

     UIImageView * view = [[UIImageViewalloc]initWithImage:[self.arrayobjectAtIndex:index]]; // UIImageView初始化,存放数组里的图片

    int pagecount = [[myscrollviewsubviews] count]; // 统计页面数

    CGRect rect =myscrollview.frame;

    rect.origin.y=0// y 坐标不变

    rect.origin.x=myscrollview.frame.size.width*pagecount;// x坐标 改变  

    view.frame=rect; 

    [myscrollviewaddSubview:view]; 

    

}


- (void)change:(id)sender

    int page =mypagecontrol.currentPage// 获取当前的page

    CGRect frame =myscrollview.frame;

    frame.origin.y =0// y 坐标不变

    frame.origin.x = frame.size.width*page;// x 坐标改变   

    [myscrollviewscrollRectToVisible:frame animated:YES];// 滚动切换图片,动画效果

    

}


- (void)scrollViewDidScroll:(UIScrollView *)sender 

{

    CGFloat pagewidth =myscrollview.frame.size.width;

    int page =floor((myscrollview.contentOffset.x - pagewidth/2)/pagewidth)+1;

    mypagecontrol.currentPage = page;// 触摸pageControl也能滚动切换图片

}

原创粉丝点击