UIScrollView 和 UIPageControl
UIScrollView
【滚动视图】非常重要
UIScrollView是滚动视图,是其它带有滚动功能视图的父类,
本身不显示或者只显示背景,主要负责子视图的滚动和翻页。
一、常用属性
1、基本方法
a、设置内容尺寸
//设置滚动视图的contentSize
self.scrollView.contentSize = self.label.frame.size;
//内容的尺寸,默认情况下 内容的尺寸等于 视图的大小
b、是否滚动、边界回弹、指示条、一直滚动
//设置是否能滚动 ,默认YES
//scrollView.scrollEnabled = NO;
//滚动条
//是否显示水平方向的滚动条
scrollView.showsHorizontalScrollIndicator = YES;
//是否显示垂直方向的滚动条
scrollView.showsVerticalScrollIndicator = NO;
//滚动条风格
//UIScrollViewIndicatorStyleDefault,
//UIScrollViewIndicatorStyleBlack,
// UIScrollViewIndicatorStyleWhite
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
//设置是否可以回弹
scrollView.bounces = YES;
//水平方向一直可以滚动(YES可以滚动),条件:内容的大小小于视图的大小,回弹必须是YES
scrollView.alwaysBounceHorizontal = YES;
//垂直方向一直可以滚动
scrollView.alwaysBounceVertical = YES;
c、松手后的减速的加速度
//设置松手以后减速的加速度
//CGFloat UIScrollViewDecelerationRateNormal 正常减速
//CGFloat UIScrollViewDecelerationRateFast 快速减速
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
d、点击状态栏回滚到顶部
//点击状态栏自动滚回顶部,默认yes;
scrollView.scrollsToTop = YES;
e、设置偏移偏移量
//设置偏移,重要属性
scrollView.contentOffset = CGPointMake(300, 300);
//等5秒调用self 的 wait方法
[self performSelector:@selector(wait) withObject:nil afterDelay:5];
- (void)wait {
//设置偏移,带有动画效果
[_scrollView setContentOffset:CGPointMake(100, 100) animated:YES];
}
也就是上边的动画结束,调用方法
//用代码写 offset 滚动的时候 才会调用这个方法
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
NSLog(@"代码方式,滚动动画结束");
}
f 、按页滚动
//设置是否可以按页滚动,默认NO;
scrollView.pagingEnabled = YES;
//如果滚动视图的宽度,正好是子视图的宽度的整数倍,正好按页滚动,一页一页的完整显示
g、缩放相关
//设置缩放的大小,必须设置代理才能缩放(实现对应的方法viewForZoomingInScrollView)
scrollView.delegate = self;
//最小缩放倍数
scrollView.minimumZoomScale = 0.5;
//最大缩放倍数
scrollView.maximumZoomScale = 2.0;
/**
* 实现代理方法
*/
//指定需要缩放的视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return scrollView.subviews[0];
}
2、代理方法
a、滚动
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"即将开始拖拽");
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"已经停止拖拽");
}
b、自由减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
NSLog(@"即将开始减速");
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"停止结束 减速");
}
c、代码方式滚动结束
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
NSLog(@"代码方式,滚动动画结束");
}
d、缩放相关
//指定需要缩放的视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return scrollView.subviews[0];
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
NSLog(@"即将开始缩放");
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
NSLog(@"已经结束缩放");
}
二、按页控制
应用
UIScrollView常用属性
contentSize
contentInset 不常用
bounces 弹簧效果
pagingEnabled 是否是分页滑动效果
scrollEnabled 是否允许滑动,如果设置为no,则只能通过方法滑动,不能通过手势滑动
showsHorizontalScrollIndicator 显示水平滚动条
showsVerticalScrollIndicator 显示垂直滚动条
indicatorStyle 滚动条风格
scrollIndicatorInsets 滚动条inset, 不常用
decelerationRate 松手后加速度,设置越大,停下来越慢,不常用
scrollsToTop 是否支持点击 statusbar回到顶端,默认YES
isTracking // 只读属性,判断滚动视图是否被触摸,可能还没有滑动
isDragging // 只读属性,判断滚动视图是否被滑动,指手未松开
isDecelerating // 只读属性,判断是否在减速运动,指手指松开后
缩放:
minimumZoomScale
maximumZoomScale
实现UIScrollView的缩放,必须使maximumZoomScale(默认1.0)和minimumZoomScale(默认1.0)不同 ,并且需要在delegate中的viewForZoomingInScrollView: 方法中返回需要缩放的view。实现以上即可进行缩放。
pragma mark -
// return a view that will be scaled. if delegate returns nil, nothing happen
- (UIView )viewForZoomingInScrollView:(UIScrollView )scrollView {
// 返回哪个子视图被缩放
// 一般来讲,不缩放scrollView本身,只缩放返回的子视图
return scrollView.subviews[0];
} - (void)scrollViewDidZoom:(UIScrollView *)scrollView;
- (void)scrollViewDidEndZooming:(UIScrollView )scrollView withView:(UIView )view atScale:(CGFloat)scale;
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
// 一旦滚动,就会无条件调用,没有任何时间点
// 无论手指在拖还是不在拖
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
// 在松开手指的那一瞬间被调用
- (void)scrollViewWillEndDragging:(UIScrollView )scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint )targetContentOffset {
- // NSLog(@”将要结束滚动”);
- // NSLog(@”加速度:%f %f”, velocity.x, velocity.y);
- // NSLog(@”预测停留点:%f %f”, targetContentOffset.x, targetContentOffset.y);
- // velocity: 加速度
- // targetContentOffset: 预测将要停留的点
- }
// 滑动结束,将要开始减速
// 手指离开了,但实际上scrollView并不一定结束了滚动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- ;
// 将要减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
// 减速结束
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
// 结速滚动后调用,要通过代码让它滚动时,此方法才会被调用
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
NSLog(@”通过代码滚动结束”);
}
// 当用户点出iPhone状态条时,滚动视图委托可以决定视图是否滚动回到开头
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
// NSLog(@”已经滚动到顶部”);
}
页控制 UIPageControl
//创建一个Scrollview
- (void)createScrollView {
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.frame];
self.scrollView = scrollView;
self.scrollView.pagingEnabled = YES;
//设置代理
scrollView.delegate = self;
[self.view addSubview:scrollView];
[self createPageControl];
}
#pragma mark - UIScrollViewDelegate
//结束减速代理
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
//设置pageControl的小圆点
//contenOfsset 用滚动视图水平方向的偏移量 除以scrollView的宽度 ,得出当前所在页面
NSInteger currentPage = scrollView.contentOffset.x / scrollView.frame.size.width;
//设置pageControl的选中点
self.pageControl.currentPage = currentPage;
}
- (void)createPageControl {
UIPageControl *pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake((self.view.frame.size.width - 300 ) / 2, 500, 300,40)];
self.pageControl = pageControl;
[self.view addSubview:pageControl];
pageControl.numberOfPages = 4;
//设置小圆点
pageControl.pageIndicatorTintColor = [UIColor purpleColor];
//设置选中的小圆点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor greenColor];
//添加事件
[pageControl addTarget:self action:@selector(pageControlPressed:) forControlEvents:UIControlEventValueChanged];
}
//pageControl值发生变化
- (void)pageControlPressed:(UIPageControl*)sender {
//设置滚动视图的偏移量
//得到水平偏移量
CGFloat offsetX = sender.currentPage * _scrollView.frame.size.width;
[_scrollView setContentOffset:CGPointMake(offsetX, 0) animated:YES];
}
UIScrollView 和 UIPageControl的更多相关文章
- UI:UIScrollView、UIPageControl
一.UIScrollView的常⽤用属性 二.UIScrollView的常⽤用代理方法 三.UIPageControl的使⽤用 四.UIPageControl与UIScrollView的结合使⽤用 U ...
- UIScrollView和UIPageControl学习使用
# UIScrollView和UIPageControl # 概要 对于同一个页面需要展示很多图片信息.子视图等的这样的需求,我们可以采用控件UIScrollVIew,与之常常一起使用的控件是UIPa ...
- 使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果
利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先增加UIScrollView和UIPageControl: -(void) loadView { ...
- iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults
首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...
- UIscrollView和UIPageControl的循环滚动
因为昨天在网上找了很久,很多只能实现向右滚动,而且一张图一个imageview ,感觉工作量很可怕啊 , 下面的例子就是不论你多少图 , 只和我代码里面的几个数值有关, 只需要修改分页和循环i的最 ...
- iOS— UIScrollView和 UIPageControl之间的那些事
本代码主要实现在固定的位置滑动图片可以切换. 目录图如下: ViewController.h #import <UIKit/UIKit.h> // 通过宏定义定义宽和高 #define W ...
- IOS 欢迎页(UIScrollView,UIPageControl)
本文介绍了app欢迎页的简单实现.只有第一次运行程序时才说会出现,其余时间不会出现.下面是效果图. 代码如下:(如有不明白的可以评论我,我会详细讲解) // // ViewController.m / ...
- UIScrollView -2(UIScrollView 与 UIPageControl的使用): 分页查看图片
1.初始化UIScrollView 2.设置初始化出来的UIScrollView的contentSize: myscrollview.contentSize =CGSizeMake(CGRectGet ...
- iOS:UI系列之UIScrollview和UIPagecontrol
转眼间,又是一天,就这样忙忙碌碌的一天一天的过着, 不过还好,不是浑浑噩噩的,也算是小有所成,劳有所获吧,嘿嘿! 好了,到了总结的时间啦, 下面就为大家简单讲解下我今天学习的内容吧,希望对各位都有所帮 ...
- 利用UIScrollView和UIPageControl实现多页图片欢迎页面
在.h文件当中实现UIScrollViewDelegate协议,让控制器充当代理: #import <UIKit/UIKit.h> @interface RPRootViewControl ...
随机推荐
- hdu_4823_Energy Conversion
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4823 题意:中文题,很清楚,要注意的是乘起来会爆int 题解: #include<cstdio& ...
- AOP与动态代理有什么联系
曾遇到“AOP与动态代理有什么联系”的问题,现把个人观点整理如下: 我觉得,动态代理是AOP的主要实现手段之一,AOP是动态代理的一种应用深化 AOP是一种思想,或者是方法论,类似OOP,是OOP的有 ...
- Entity Framework 学习高级篇2—改善EF代码的方法(下)
,IQueryable<Customers>>( (database) => database.Customers.Where(c => c.City == " ...
- Ajax及select级联
cascade.jsp(Test/WebContent/jsp/cascade.jsp): <%@ page language="java" contentType=&quo ...
- nginx proxy优化
常用优化要点 当nginx用于反向代理时,每个客户端将使用两个连接: 一个用于响应客户端的请求,另一个用于到后端的访问: 如果机器是两核CPU,例如: 1 2 $ grep ^proces /proc ...
- DotNetBar教程
DotNetBar是一组用于.NET Framework环境下的一组组件集,利用该组件集能够打造绚丽并且实用的应用程序界面,给开发人员提供极大的便利.关于DotNetBar,详情请参考其官方网站:ht ...
- 【最长下降子序列的长度和个数】 poj 1952
转自http://blog.csdn.net/zhang360896270/article/details/6701589 这题要求最长下降子序列的长度和个数,我们可以增加数组maxlen[size] ...
- windows MySQL 安装
MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\P ...
- Tinyxml封装类COperatorXml
OperatorXml.h头文件 #ifndef _OPERATOR_XML_H_ #define _OPERATOR_XML_H_ #include <string> class TiX ...
- HDU 2802 F(N)(简单题,找循环解)
题目链接 F(N) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...