2015-12-15- UI6_UIScrollView

//
// RootViewController.m
// UI6_UIScrollView
//
// Created by YIem on 15/12/14.
// Copyright (c) 2015年 www.yiem.net YIem博客. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController () // 协议

@end

@implementation RootViewController

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor whiteColor];

    ////********* UIScrollView 滚动视图*************///

    // UIScrollView 是所有滚动视图的基类
    // 功能 : 1.滚动 2.播放
    #if 0
    // 1.创建
    UIScrollView *sv = [[UIScrollView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
    // 2.设置
    sv.backgroundColor = [UIColor yellowColor];
    // 3.添加父视图
    [self.view addSubview:sv];
    // 4.内存
    [sv release];
    // 滚动的条件: 实际内容大小 > 滚动视图自身的frame
    ////*******< contentSize 内容大小 >*******////
    sv.contentSize = CGSizeMake(300, 300);
    /// 只允许左右滚动
    // sv.contentSize = CGSizeMake(300, 0);
    // 只允许上下ai
    // sv.contentSize = CGSizeMake(0, 300);

#endif

#if 1

// 相册练习
// 1. 创建相册
//  self.view.frame  和屏幕一样大
UIScrollView *photos = [[UIScrollView alloc]initWithFrame:self.view.frame];
photos.backgroundColor = [UIColor yellowColor];
[self.view addSubview:photos];
[photos release];
// 设置内容大小
photos.contentSize = CGSizeMake(self.view.frame.size.width * 6, 0);
// 3. 处理图片数组
NSMutableArray *photoArr = [NSMutableArray array];
for (NSInteger i = 1; i <= 6 ; i++) {
    // 图片名
    NSString *name = [NSString stringWithFormat:@"S%ld", i];
    // 图片路径
    NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"jpg"];
    // 图片对象
    UIImage *img = [UIImage imageWithContentsOfFile:path];
    // 添加数组
    [photoArr addObject:img];

#if 0
// 4.方式一:不使用数组
// 创建相框
UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(375 * (i - 1), 0, 375, 667)];
imgView.image = img;
[photos addSubview:imgView];
[imgView release];
#endif
}

// 4. 方式二:使用数组
for (NSInteger i = 0; i < photoArr.count; i++) {
    UIImageView  *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(375 * i, 0, 375, 667)];
    imgView.image = photoArr[i];
    [photos addSubview:imgView];
    [imgView release];
}

// 属性设置
/*******<  contentOffset 偏移量 >*****/
// 将设置的点移动到frame的原点
// 滚动时偏移量一定会改变  并且偏移量改变一定会滚动
photos.contentOffset = CGPointMake(0, 0);
//****** < contentInset 边界预留   > ******/
// 在滚动视图的内容之外添加预留区域(上左下右)
photos.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
//*****< pafeingenable整页翻动效果>**/
photos.pagingEnabled = YES;
//*****<  bouces 边缘效果>*****/默认YES
photos.bounces = YES;
// /.水平/垂直 边缘效果
// 当前允许在某一方向小于frame时 有边缘效果
photos.alwaysBounceHorizontal = YES;
photos.alwaysBounceVertical = NO;
/*****   <scrollsToTop  滚到头 >****/
photos.scrollsToTop = YES;
/**********< scrollEnabled  空否滚动>********/
photos.scrollEnabled = YES;// 默认允许
// 滚动条 显示/隐藏
photos.showsHorizontalScrollIndicator = NO;// 水平
photos.showsVerticalScrollIndicator = NO;//垂直
// 设置代理人
photos.delegate = self;
// 缩放
// 设置缩放比例
// 最小比例
photos.minimumZoomScale = 0.5;
// 最大比例
photos.maximumZoomScale = 2;
// 设置当前比例
photos.zoomScale = 1;
photos.tag = 2000;

#endif
#if 1
/******** PageControl 和 ScrollView 配合使用***********/

UIPageControl *page = [[UIPageControl alloc]    initWithFrame:CGRectMake(0, 600, 150, 30)];
//page.backgroundColor = [UIColor blackColor];
page.center = CGPointMake(self.view.center.x, page.center.y);
page.numberOfPages = 6;
page.tag = 1000;
[self.view addSubview:page];
// page.enabled = YES; 是否点击小图标变化
[page release];
// 添加事件
[page addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];

#endif

}
// 页面控制器触发方法

  • (void)pageAction:(UIPageControl *)page
    {
    // 获取滚动视图
    UIScrollView *sv = (UIScrollView * )[self.view viewWithTag:2000];
    // 设置偏移量
    // sv.contentOffset = CGPointMake(page.currentPage * sv.frame.size.width, 0);// 没有动画效果
    [sv setContentOffset:CGPointMake(page.currentPage * sv.frame.size.width, 0 )animated:YES];// 有动画效果

}
#if 0
// 实现缩放响应方法
// 当缩放被触发时 哪个视图跟随变化

  • (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
    // 让滚动视图上加载的第一张图片跟随缩放
    return scrollView.subviews.firstObject;
    }
    #endif

#pragma mark - scrollView 滚动协议方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// 只有视图滚动 就会一直触发该方法
// 任何偏移量的改变 都会触发该方法
NSLog(@"偏移量: %@", NSStringFromCGPoint(scrollView.contentOffset));
NSLog(@"滚啊滚");
}
// 一次完整的滚动非两个阶段: 拖追/减速

  • (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
    {
    // 滚动开始执行的第一个方法
    // 滚动开始标志
    NSLog(@"将要开始");
    }
  • (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
    {
    NSLog(@"将要结束");
    }
  • (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
    {
    NSLog(@"已经结束");
    }
  • (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
    {
    NSLog(@"将要开始减速");
    }
  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
    {
    // 滚动时 触发的最后一个方法
    // 滚动结束标识
    NSLog(@"已经结束减速");
// 翻页结束
// 获取page
UIPageControl *page = (UIPageControl * )[self.view viewWithTag:1000];
// 设置页数
// 公式: 页数= x偏移量 / 单页宽度
page.currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;

}

  • (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

标签: ios, ios开发, ui

添加新评论

Title - Artist
0:00