[7]UIScrollView,UIPageControl

UIScrollView

滚动 播放

contentSize //定义内容区域大小,决定是否能滚动
contentOffset //食欲左上角距离坐标远点的偏移量
scrollsToTop //滑动都顶部(点状态条的时候)
pagingEnabled //是否能整屏翻动
bounces //边界是否回弹


//在这里我们打印一下滚动视图的contenSize,来看一下是否在缩放时,滚动视图的contenSize发生了改变
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
{
    NSLog(@"%@",NSStringFromCGSize(scrollView.contentSize));
//    scrollView.contentSize = CGSizeMake(1150, 1000);

}
//viewDidLoad中的代码
#pragma mark  ----------设置滚动视图的滚动-----
    UIScrollView *sView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 20, 350, 600)];
    sView.backgroundColor = [UIColor grayColor];
    sView.contentSize = CGSizeMake(1000, 800);//contentsize这个属性决定了滚动视图能显示内容的区域的大小,也是能滚动区域的大小.
    sView.contentOffset = CGPointMake(250, 10); //视图左上角距离坐标原点的偏移量
    sView.scrollEnabled = YES;//让scrollView回到顶部
//    sView.pagingEnabled = YES;//默认为NO,是否整屏翻动 控制的时上下左右
    sView.bounces = YES;//设置当前活动边界的时候是否回弹,默认是yes;
//    sView.alwaysBounceVertical = YES; //垂直 上下回弹
//    sView.alwaysBounceHorizontal = YES; //左右水平回弹
    
    //增加滑动区域,上下左右多处多少的活动区域
//    sView.contentIn
//    set = UIEdgeInsetsMake(110, 10, 10, 10);
#pragma mark      ----------设置滚动的视图缩放属性-------
    sView.maximumZoomScale = 10.0; //指定最大的放大倍数
    sView.minimumZoomScale = 0.5; //设置最小的缩小倍数,设定倍数之后是 不能进行缩放的,必须指定缩放的是谁
    sView.delegate = self;//将视图控制器指定为滚动视图的代理对象,去负责指定需要缩放
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(250, 10, 150, 100)];
    label.userInteractionEnabled = YES; //交互 与滑动无关的
    label.text = @"滚动把
 牛宝宝";
    label.numberOfLines = 0;//断行
    label.backgroundColor = [UIColor whiteColor];
    [sView addSubview:label];
    [label release];
    [self.view addSubview:sView];
    [sView release];

UIPageControl

currentPage //当前页
numberOfPages //指定页面的个数

#pragma mark  ----------创建一个UIPageControl对象并且配置--------------
    UIPageControl *page = [[UIPageControl alloc] initWithFrame:CGRectMake(25, 630, 300, 20)];
    page.numberOfPages = 5; //给定多少页
    page.currentPage = 2;   //指定初始页,必须在给定页数之后,不然不会发生改变
    page.backgroundColor = [UIColor blackColor];
    [page addTarget:self action:@selector(aa:) forControlEvents:UIControlEventValueChanged];
    
    [self.view addSubview:page];

UIScrollView UIPageControl 实现轮回播放

//.h文件
#import <UIKit/UIKit.h>
@interface RootViewController : UIViewController <UIScrollViewDelegate>
@property (nonatomic,retain) UIPageControl *page;
@property (nonatomic,retain) UIScrollView *sView;
@property (nonatomic,retain) UILabel *firstLabel;
@end

//.m文件中
#import "RootViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController


-(void)dealloc
{
    [_firstLabel release];
    [_sView release];
    [_page release];
    [super dealloc];
}



//在滚动方法中实现最后一张与第一张的临界翻转
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint offset = scrollView.contentOffset;
    CGFloat width = self.view.frame.size.width;
    if (offset.x + width > scrollView.contentSize.width ) {
        [scrollView setContentOffset:CGPointMake(0, 0) animated:NO];
    }
    else if(offset.x < 0 ){
        [scrollView setContentOffset:CGPointMake(10*width, 0) animated:NO];
    }

}


//在滚动视图停止滚动的时候,改变pagecontroltPa的currenge的值
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //获取当前滚动视图的偏移量
    CGPoint offset = scrollView.contentOffset;
    //计算当前是第几页
    NSInteger page = offset.x / self.view.frame.size.width;
//    if (page == 9) {
//        _page.currentPage = 0;
//    }
//    else {
//    _page.currentPage  = page - 1;
//    }
    _page.currentPage = page - 1 < 0 ? 9 :page - 1;

    
}
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    
    
    UIScrollView *sView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    CGFloat width = self.view.frame.size.width;
    CGFloat height = self.view.frame.size.height;
    

    
    sView.contentSize = CGSizeMake(width*11, height);
    sView.pagingEnabled = YES;
    _sView.showsHorizontalScrollIndicator = NO;
    sView.delegate = self;
    _sView =sView;

    //为了让第一张图显示为0,必须重新设置滚动视图的偏移量
    _sView.contentOffset = CGPointMake(width, 0);
   
    
    
    [self.view addSubview:sView];
    
    NSArray *arrText = @[@"我是第一个",@"我是第二个",@"谁是第三个",@"你是第四个",@"他是第五个",@"第六个出来",@"喝了七个",@"再来八个",@"九九一杯酒",@"十全十美"];
    
    _firstLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, height)];
    _firstLabel.text = @"十全十美";
    _firstLabel.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0      green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];
    _firstLabel.font = [UIFont boldSystemFontOfSize:30];
    _firstLabel.textAlignment = NSTextAlignmentCenter;
    [_sView addSubview:_firstLabel];
    
    
    for (int i = 0; i < 10; i++) {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(width*(i+1), 0, width, height)];
        if (i == 9) {
            label.backgroundColor = _firstLabel.backgroundColor;
        }
        else{
        label.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];
        }
        label.text = arrText[i];
        label.font = [UIFont boldSystemFontOfSize:30];
        label.textAlignment = NSTextAlignmentCenter;
        [sView addSubview:label];
        [label release];
        
    }
    
    UIPageControl *page = [[UIPageControl alloc] initWithFrame:CGRectMake(0, height-50, width, 30)];
//    page.backgroundColor = [UIColor blackColor];
    page.numberOfPages = 10;
    page.pageIndicatorTintColor = [UIColor redColor];
    page.currentPageIndicatorTintColor = [UIColor blackColor];
    page.currentPage = 0;
    [self.view addSubview:page];
    
    _page = page;
    
    [page release];
    [sView release];
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end


小技巧

ScrollView莫名其妙不能在viewController划到顶怎么办?

self.automaticallyAdjustsScrollViewInsets = NO;
On the road。。。
原文地址:https://www.cnblogs.com/ianhao/p/4467929.html