zoukankan      html  css  js  c++  java
  • [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。。。
  • 相关阅读:
    邮箱正则表达式写法
    java中的的正则表达式
    Java中重载(overload)和重写(override)的区别
    内部类的使用规范
    Java静态代码块(static block)调用陷阱小记
    sychronized关键字的使用
    关于java中一次编译多个源文件时的编译顺序的问题
    java中内部类的访问调用
    map的三种遍历方法
    Java堆.栈和常量池
  • 原文地址:https://www.cnblogs.com/ianhao/p/4467929.html
Copyright © 2011-2022 走看看