1、UIScorollView   
是ios中提供的滑动控件,用来解决当内容区域大于scorollView可视区域时,可以通过滑动的方式查看整个内容区域,UIScorollView
的滑动控件的基类,后期药学的UITableView(表视图),内部实现的原理是修改视图的bounds
//1.创建对象

UIScrollView
*scrollView =
[[UIScrollView
alloc]initWithFrame:CGRectMake(20,
20,
kScreenWidth
-
20
*
2,
kScreenHeight
-
20
*2)];

//2.配置属性

//   
scrollView.backgroundColor = [UIColor redColor];

//2.1 设置内容区域的大小

   
scrollView.contentSize
=
CGSizeMake(500,
1000);

//2.2 修改内容区域的偏移量

   
//x变大,往左偏移,y变大往上偏移
1
//   
scrollView.contentOffset =  CGPointMake(140,
400);

//2.3 是否显示滚动指示条

   
scrollView.showsHorizontalScrollIndicator
=
NO;//默认为YES

scrollView.showsVerticalScrollIndicator
=
NO;//默认为YES

//2.4 修改滚动指示条的样式
//   
scrollView.indicatorStyle = 
UIScrollViewIndicatorStyleWhite;

//2.5 设置scrollView 能否滚动

   
scrollView.scrollEnabled
=
YES;//默认为YES

//2.6 设置方向锁,设置滑动时只能从一个方向滚动

   
scrollView.directionalLockEnabled
=
NO;//默认为NO

//2.7 设置是否整屏滚动

   
scrollView.pagingEnabled
=
YES;//默认为NO





   
//2.8
设置当滑动到屏幕边缘的时候是否出现反弹效果
   
scrollView.bounces
=
YES;//默认为YES

   
//2.9
设置当内容区域等于或小于可视区域时,依然具有边界反弹效果
//水平方向
   
scrollView.alwaysBounceHorizontal
=
YES;//默认为NO
//垂直方向
   
scrollView.alwaysBounceVertical
=
YES;//默认为NO
  

   
//2.10
设置点击状态栏,scrollView 是否回到顶部,此时y轴的偏移量是0
   
scrollView.scrollsToTop
=
YES;//默认为YES



   
//2.11
scrollView 的代理属性

   
//self指试图控制器对象
   
scrollView.delegate
=
self;
   
//2.12
设置scrollView的缩放比例

   
scrollView.minimumZoomScale

0.5;
   
scrollView.maximumZoomScale
=
3.0;
 
  
 
  UIImage
*image =
[UIImage
imageNamed:
@"4.JPG"];

UIImageView
*imageView =
[[UIImageView
alloc]initWithImage:image];

imageView.tag
=
101;

imageView.frame
=
CGRectMake(0,
0,
scrollView.contentSize.width,
scrollView.contentSize.height);

//添加到父视图

[scrollView addSubview:imageView];

[self.view
addSubview:scrollView];

//释放所有权

[scrollView release];

}
——————————————————————————-——————
scrollView
的代理属性的13个方法及用途
//触发时机:ScrollView
将要开始拖拽idea时候触发(此时手指刚刚触摸到scrollView的时候)

- (void)scrollViewWillBeginDragging:(UIScrollView
*)scrollView{

   

   
NSLog(@"开始拖拽了没?");

}


//触发时机:ScrollView
将要结束拖拽的时候触发

- (void)scrollViewWillEndDragging:(UIScrollView
*)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset
NS_AVAILABLE_IOS(5_0){

   
NSLog(@"拖拽结束了没?");

}


//触发时机:ScrollView
已经结束拖拽的时候触发

- (void)scrollViewDidEndDragging:(UIScrollView
*)scrollView
willDecelerate:(BOOL)decelerate{

   
NSLog(@"结束了没?好快啊!");

//在此方法中能拿到contenOfSet的偏移量

}


//触发时机:将要减速的时候触发(此方法不一定触发,匀速不一定触发)

- (void)scrollViewWillBeginDecelerating:(UIScrollView
*)scrollView{

   
NSLog(@"减速了么?");

}


//触发时机:已经结束减速的时候触发(此方法不一定触发,上面的减速方法不触发,这个结束减速的方法就不会触发)

- (void)scrollViewDidEndDecelerating:(UIScrollView
*)scrollView{

   
NSLog(@"加速完了吗?");

//一般在这个方法中获取scrollView的偏移量,或者设置scrollView的偏移量

//   
scrollView.contentOffset = CGPointZero;
//   
[scrollView setContentOffset:CGPointZero
animated:YES];

}


//触发时机:scrollView结束减速并且必须有动画效果才会触发(必须要有动画效果偶)

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView
*)scrollView{

   
NSLog(@"有动画吗");

}


//触发时机,返回缩放后的视图,但是只能返回scrollView(内容)上的子视图

- (UIView
*)viewForZoomingInScrollView:(UIScrollView
*)scrollView{

   
return
[scrollView
viewWithTag:101];

}


//触发时机:开始缩放的时候触发

- (void)scrollViewWillBeginZooming:(UIScrollView
*)scrollView
withView:(UIView *)view NS_AVAILABLE_IOS(3_2){

   
NSLog(@"开始缩放了吗");

}
//触发时机:结束缩放的时候触发

- (void)scrollViewDidEndZooming:(UIScrollView
*)scrollView
withView:(UIView *)view atScale:(CGFloat)scale{

   
NSLog(@"结束缩放了吗");

}


//触发时机:点击状态栏,调用该方法,该方法能实现的前提是scrollToTop的属性是YES

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView
*)scrollView{

   
return
YES;

}


//触发时机:scrollView
已经回到顶部了

- (void)scrollViewDidScrollToTop:(UIScrollView
*)scrollView{

}
 总结:scrollView的使用技巧

            
使用scrollViewDidZoom: 实时修改自身视图的大小

            
使用scrollViewDidEndDecelerating:
获取contentOfSet
==============================================================

LaunchViewController.m

#import
"LaunchViewController.h"

#import "PageViewController.h"

//图片个数

#define
kImageCount 6

#define kScreenWidth [UIScreen mainScreen].bounds.size.width

#define kScreenHeight  [UIScreen
mainScreen].bounds.size.height
@interface
LaunchViewController
()<</span>UIScrollViewDelegate>

//定义属性方便使用

@property(nonatomic,retain)UIScrollView
*scrollView;

@property(nonatomic,retain)UIPageControl
*pageControl;

@end

@implementation
LaunchViewController

- (void)dealloc{

_scrollView
=
nil;

_pageControl
=
nil;

[super
dealloc];

}





- (void)viewDidLoad
{

   
[super
viewDidLoad];

//再添加scrollView

[self
layoutScrollView];

//先添加pageControl

[self
layoutPageControl];

}


//布局scrollView

- (void)layoutScrollView{

self.scrollView
=
[[UIScrollView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];

//设置内容页的大小

self.scrollView.contentSize
=
CGSizeMake(kImageCount
*
kScreenWidth,
kScreenHeight);

//隐藏水平指示条

self.scrollView.showsHorizontalScrollIndicator
=
NO;

//整屏滑动

self.scrollView.pagingEnabled
=
YES;

//制定代理

self.scrollView.delegate
=
self;

//添加图片

for
(int
i
= 0;
i <</span> kImageCount;
i ++ ) {

       
UIImageView
*imageView =
[[UIImageView
alloc]initWithFrame:CGRectMake(i
* kScreenWidth,
0,
kScreenWidth,
kScreenHeight)];

//图片名

NSString
*name =
[NSString
stringWithFormat:@"v6_guide_%d",i
+ 1];

//初始化UIImage
对象

       
UIImage
*image =
[UIImage
imageNamed:name];

imageView.image
=
image;

       
[self.scrollView
addSubview:imageView];

[imageView release];

//添加手势

if
(kImageCount
-

== i) {

           
UITapGestureRecognizer
*tap =
[[UITapGestureRecognizer
alloc]initWithTarget:self
action:@selector(handleTap: 
)];

           
[imageView addGestureRecognizer:tap];
           
[tap release];
           
//打开用户交互
           
imageView.userInteractionEnabled
=
YES; 
   
 
       
}

    }



   
self.scrollView.backgroundColor
=
[UIColor
yellowColor];

[self.view
addSubview:self.scrollView];

[self.scrollView
release];

}


PageViewController.m

#pragma mark
pageControl的实现
-
(void)layoutPageControl{

_pageControl
=
[[UIPageControl
alloc]initWithFrame:CGRectMake(0,
kScreenHeight
-
60,
kScreenWidth,
60)];

_pageControl.numberOfPages
=
kImageCount;

//配置点的颜色

_pageControl.currentPageIndicatorTintColor
=
[UIColor
redColor];

//配置其他点的颜色

   
_pageControl.pageIndicatorTintColor
=
[UIColor
greenColor];
   
//给pageControl
关联事件
   
[_pageControl
addTarget:self
action:@selector(handlePage
: ) forControlEvents:(UIControlEventValueChanged)];
  
   
[self.view
addSubview:_pageControl];
   
[_pageControl
release];
}
#pragma mark 
是轻拍手势的实现
-
(void)handleTap
: (UITapGestureRecognizer
*)tap{

   
NSLog(@"轻拍了嘛?");

//是一个单例,可以实现数据持久化,当用户点击到最后一张图片时,引导图启动结束,此时在用户偏好中做一个标记,并把这个标记存储起来

NSUserDefaults
*user =
[NSUserDefaults
standardUserDefaults];

[user
setBool:YES
forKey:@"daociyiyou"];

//赋值之后立即同步,作用是将事件标记的值存储起来

   
[user synchronize];

   
//实现点击最后一张图片进入用户进入用户界面

PageViewController
*pageVC =
[[PageViewController
alloc]init];

//更换当前的window
的根视图控制器,将pageVC设置为主界面

   

   
//取出当前的应用程序对象

[UIApplication
sharedApplication].keyWindow.rootViewController
=
pageVC;

   

   
[pageVC release];

}


#pragma mark
scrollView的实现
-
(void)scrollViewDidEndDecelerating:(UIScrollView
*)scrollView{

//求出scrollView内容在x轴偏移量

CGFloat
x
= _scrollView.contentOffset.x;

//求出pageCrontrol对应的下标

   
_pageControl.currentPage
=
x / kScreenWidth;

}



- (void)handlePage
: (UIPageControl
*)page{

   

   
NSLog(@"%ld",page.currentPage);

//让_scrollView
跟pageControl 页数的改变而改变

   
_scrollView.contentOffset
=
CGPointMake(page.currentPage
*
kScreenWidth,
0);
}
————————————————————————————————

AppDelegate.m

   
//根据判断条件让运行程序启动引导界面

//获取用户对象,用户对象中存储的是一些有用的偏好设置

NSUserDefaults
*user =
[NSUserDefaults
standardUserDefaults];

   
if
([user
boolForKey:@"daociyiyou"]
!= NO)
{
       
//   
//根视图控制器
       
self.window.rootViewController
=
[PageViewController
new];
   
}else{

//根视图

self.window.rootViewController
=
[LaunchViewController
new];

}

   
return
YES;

}
最终效果:

本节所需素材下载:http://pan.baidu.com/s/1dD8pMLj
__________________________________________________________________________________
欢迎学习本文,未经博主许可,禁止转载!

UIScrollView&nbsp;UIPageViewControlle…的更多相关文章

  1. 【原】Masonry+UIScrollView的使用注意事项

    [原]Masonry+UIScrollView的使用注意事项 本文转载请注明出处 —— polobymulberry-博客园 1.问题描述 我想实现的使用在一个UIScrollView依次添加三个UI ...

  2. UIScrollView的封装

    UIScrollView的封装 效果 特点 1.用法简单,尺寸大小,随意设置位置 2.可以有多个数据源的数据,可以定制不通的界面(如同上图,一个有文字,一个没有文字) 3.能够实现点击事件 用法 1. ...

  3. UI第十七节——UIScrollView

    // 实例化一个ScrollView    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen main ...

  4. UI控件(UIScrollView)

    @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //创建一个scrollview UIScrollV ...

  5. UIScrollView的delaysContentTouches与canCencelContentTouches属性

    UIScrollView有一个BOOL类型的tracking属性,用来返回用户是否已经触及内容并打算开始滚动,我们从这个属性开始探究UIScrollView的工作原理: 当手指触摸到UIScrollV ...

  6. iOS 视图:重绘与UIScrollView(内容根据iOS编程编写)

    我们继续之前的 Hypnosister 应用,当用户开始触摸的时候,圆形的颜色会改变. 首先,在 JXHypnosisView 头文件中声明一个属性,用来表示圆形的颜色. #import " ...

  7. 学习笔记之-------UIScrollView 基本用法 代理使用

    //contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. // 滚动 self.ScrollView.contentSize =sel ...

  8. iOS UIScrollView的使用

    一.为什么要用UIScrollView? 移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容普通的UIVie ...

  9. iOS之UIScrollView循环滚动

    #import "ViewController.h" #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width #d ...

随机推荐

  1. 使用 OpenCV 与 Face++ 人脸识别

    今天看到一篇文章<使用 OpenCV 与 Face++ 实现人脸解锁>,感觉挺好玩,就照着作者的讲解,写了一下.详细内容还请看原作者文章. # *^_^* coding:utf-8 *^_ ...

  2. 小知识点 取消button动作 和取巧按钮高亮

      如果让按钮在点击时不变暗 进行下面设置:   如果使butten失去动画效果进行下面设置:(一般用于图片+文字,效果等于可以加图片班的label,当然label不能加图片)

  3. Node.js 加密

    稳定性: 2 - 不稳定; 正在讨论未来版本的 API 改进,会尽量减少重大变化.详见后文. 使用 require('crypto') 来访问这个模块. 加密模块提供了 HTTP 或 HTTPS 连接 ...

  4. GDAL C#中文路径,中文属性名称乱码问题

    昨天写的博客,将C#读取shp中文属性值乱码的问题应该可以解决,博客地址为:http://blog.csdn.net/liminlu0314/article/details/54096119,然后又测 ...

  5. COS对象存储服务的使用

    ---------------------------------------------------------------------------------------------[版权申明:本 ...

  6. 在vs2013上的编译tesseract-ocr

    在vs2013上的编译tesseract-ocr OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程. Tesserac ...

  7. Native Hibernate与Hibernate JPA

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50182005 翻译来源:http://stackoverflow. ...

  8. PHP Ajax JavaScript Json 实现天气信息获取

    使用第三方服务 间接方式 思路 使用到的服务 实现代码 前端完整代码 总结 要在自己的网站上添加一个天气预报功能,是一个很普通的需求,实现起来也不是很难.今天来介绍几个简单的方法. 使用第三方服务 有 ...

  9. Linux 高性能服务器编程——I/O复用的高级应用

    高级应用一:非阻塞connect connect系统调用的man手册中有如下的一段内容: EINPROGRESS The socket is non-blocking and the connecti ...

  10. Linux下的一些常用命令(一)

    在Linux环境下敲各种命令是再正常不过了,尤其是现在大多少服务器均为Linux系统,但是我又记不住这么多命令,只是偶尔在项目做完发布到服务器上的时候会涉及到,所以在网上找了一些命令,在此记录一下~ ...