一.UIScrollView使用引导思路。

1.之前我们所学的显示图片是用UIImageView

2.将UIImageView添加到根视图中,不显示的原因:没有设置位置

3.当图片比屏幕大时,直接放在屏幕大小的尺寸中,会被压缩。但是图片会被压缩。

4.我们应该根据图片大小设置UIImageView的尺寸。但是发现屏幕显示的只有图片的一半。

5.怎么才能看的见所有图片内容了,这就需要用到UIScrollView.

6.将图片添加到UIScrollView时,发现还是不能滚动,因为没有设置UIScrollView的滚动视图。

7.设置之后,就能滚动UIScrollView了,而且能看到所有图片内容.

8.UIScrollView设置frame指的是UIScrollView的可视范围。

二.contOffset用来精确控制UIScrollView的滚动位置

三.UIScrollView功能:

1.当图片比屏幕大,为了不让图片被压缩,且能看见,就将图片添加到UIScrollView上面。

2.UIScrollView可以做缩放功能。

四:要想让scrollView有缩放功能。

步骤一:设置scrollView的代理

步骤二:让控制器遵守UIScrollView的协议

步骤三:实现UIScrollView协议的缩放方法。

步骤四:设置UIScrollView的最大和最小缩放比例。

步骤五:   按option键 对图片进行伸缩。

注意协议方法都是以类名开头的。这是苹果官方推荐这样做的

scrollView内部是这样实现缩放功能的。

1.内部调用代理的方法,获取需要缩放的视图。

2.获取缩放视图后,根据手势功能对视图进行缩放。

六.什么是代理

代理两个场合:1.有些事情自己不想做,就交给代理做。

2.想监听某个对象的动作的时候,可以使用代理。

七:UITextField练习思路

步骤一:搭建UI界面。

步骤二:做键盘退出处理.

只要UITextField是一个视图的子视图,就可以用[view endEditing:YES]将键盘退出.

步骤三:用xib描述键盘顶部上面的视图。

步骤四:xib里是一个UIToolBar,里面有一些UIBarButtonItem.

步骤五:设置UITextField顶部视图为xib描述的视图。

textField.inputAccessoryView = xib描述的视图。即可让描述的xib为键盘顶部的工具条。

一、UIScrollView

1.常见属性

@property(nonatomic) CGPoint contentOffset; // 记录UIScrollView滚动的位置

@property(nonatomic) CGSize contentSize; // 内容尺寸(能滚动的范围)

@property(nonatomic) UIEdgeInsets contentInset; // 额外增加的滚动区域(在上下左右4个边缘)

@property(nonatomic,assign) id<UIScrollViewDelegate> delegate; // 代理对象

@property(nonatomic) BOOL bounces; // 是否有弹簧效果

@property(nonatomic) BOOL showsHorizontalScrollIndicator; // 是否显示水平滚动条

@property(nonatomic) BOOL showsVerticalScrollIndicator; // 是否显示垂直滚动条

// tip : 重点掌握contentSize、contentOffset、delegate

2.捏合手势缩放

1> 缩放原理详解

* 当用户尝试缩放UIScrollView的时候,UIScrollView会尝试向它的delegate(代理对象)发送一条消息,询问要缩放哪一个子控件

* 换种说法,也就是说,UIScrollView会尝试调用delegate的某个方法 ,询问要缩放哪一个子控件,并且该方法的返回值就是需要缩放的子控件

2> 缩放原理总结

* UIScrollView先设置delegate对象

* UIScrollView必须知道delegate是通过哪个方法返回需要缩放的子控件,delegate必须实现那个返回需要缩放子控件的方法

* UIScrollView要跟delegate对象协商好:用哪一个方法返回需要缩放的子控件

* 那个返回需要缩放子控件的方法就是:

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

3.缩放的一般实现步骤(比如缩放UIScrollView内部的UIImageView)

1> 设置UIScrollView的delegate为控制器(self)

2> 控制器遵守UIScrollViewDelegate协议  <UIScrollViewDelegate>

3> 控制器实现-(UIView *)viewForZoomingInScrollView:方法,返回需要缩放的子控件

4> 设置最大和最小缩放比例

二、代理设计模式

1.使用场合

1> A想让B帮忙做一些事情,就让B成为A的代理

2> A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理

3> B想监听A所做的一些事情,就让B成为A的代理

2.使用步骤

1> 定义一份协议

2> B要遵守协议,实现相应的方法

3> A中要定义一个代理属性 id<协议> delegate;

4> 创建B对象,设置A的delegate属性为B对象

三、键盘处理

1.退出键盘的2种方法

1> 让文本框把键盘退回去(调用UITextField的resignFirstResponder方法)

[textField resignFirstResponder];

2> 一次性退出任何键盘

[self.view endEditing:YES];

2.自定义键盘

@property (readwrite, retain) UIView *inputView;

3.自定义键盘顶部显示的控件

@property (readwrite, retain) UIView *inputAccessoryView;

四、必须掌握

1.UIScrollView的contentOffset、contentSize属性

2.UIScrollView的contentSize和frame.size的区别

3.UIScrollView的常见代理方法

// 当UIScrollView要进行缩放的时候调用,此方法返回需要进行缩放的控件

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

// 当UIScrollView滚动了就会调用

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

4.UIPageControl的简单使用

* numberOfPages : 总页数

* currentPage : 当前页码

5.键盘的退出

一、 基本使用

1. 作用:UIScrollView可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看

2. 常见属性

CGSize contentSize :设置UIScrollView的滚动范围

CGPoint contentOffset :UIScrollView当前滚动的位置

UIEdgeInsets contentInset :这个属性可以在四周增加滚动范围

3. 其他属性

BOOL bounces 是否有弹簧效果

BOOL scrollEnabled 是否能滚动

BOOL showsHorizontalScrollIndicator 是否显示水平方向的滚动条

BOOL showsVerticalScrollIndicator     是否显示垂直方向的滚动条

UIScrollViewIndicatorStyle indicatorStyle  设定滚动条的样式

BOOL dragging  是否正在被拖拽

BOOL tracking  当touch后还没有拖动的时候值是YES,否则NO

BOOL decelerating  是否正在减速

BOOL zooming  是否正在缩放

二、 手势缩放

  1. 设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象
  2. 设置minimumZoomScale :缩小的最小比例
  3. 设置maximumZoomScale :放大的最大比例
  4. 让代理对象实现下面的方法,返回需要缩放的视图控件

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

跟缩放相关的常用方法还有

正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView

缩放完毕的时候调用

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

三、 分页效果

设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转

一般会配合UIPageControl增强分页效果,UIPageControl常用属性:

NSInteger numberOfPages : 总页数

NSInteger currentPage : 当前的页码

BOOL hidesForSinglePage : 当只有一页的时候,是否要隐藏视图

监听UIPageControl的页面改变:

// 添加监听器

[pageControl addTarget:self action:@selector(pageChange:)

forControlEvents:UIControlEventValueChanged];

// 监听方法

- (void)pageChange:(UIPageControl *)pageControl {  }

转载于:https://www.cnblogs.com/monicaios/p/3498519.html

iOS基础 - UIScrollView相关推荐

  1. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  2. IOS基础之iPad的屏幕旋转方向判断

    IOS基础之iPad的屏幕旋转方向判断 #pragma mark - 屏幕旋转 - (void)viewWillTransitionToSize:(CGSize)size withTransition ...

  3. IOS基础之segue使用,

    IOS基础之segue使用, segue是接线,接入的意思.控制器与控制器之间的连线. sourceViewControl来源控制器 destinationViewController 目标控制器,以 ...

  4. IOS基础之打砖块项目演练

    IOS基础之打砖块项目演练 本项目涉及CADisplayLink核心动画,各个控件的使用,运行循环,逻辑判断等,if和for,frame坐标的改变,CGPoint结构体,成员变量的赋值,两种手势,拖拽 ...

  5. ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用

    ios基础考试题1,实现按钮点击改变位置和图片的透明度和动画的使用 考察frame,center,bounds的坐标,改变,动画的使用,图片容器的UIImageView的透明度等知识 oc写法 // ...

  6. IOS基础之使用UICollectionView纯代码创建

    IOS基础之使用UICollectionView纯代码创建 资料来自2016-5-12某站. 有一定的参考意义, 涉及plist 转字典模型,UICollectionView使用纯代码加载到View里 ...

  7. IOS基础之计算器的编写

    IOS基础之计算器的编写 // // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/26. //#impo ...

  8. IOS基础之NSFounation框架的NSDictionary,NSMutableDictionary的使用

    IOS基础之NSFounation框架的NSDictionary,NSMutableDictionary的使用 // // main.m // Day11-NSFoudation框架 // // Cr ...

  9. IOS基础之NSString,NSMutableString,NSArray的基本使用

    IOS基础之NSString,NSMutableString,NSArray的基本使用 // // main.m // Day10-Foundation框架 // // Created by 鲁军 o ...

  10. IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例

    IOS基础之Foundation框架常用类NSFileManager,DSDate,CGPoint,CGSize,copy,单例 1.01_FileManager学习 // // main.m // ...

最新文章

  1. smarty mysql demo_PHP Smarty模版简单使用方法
  2. 计算机视觉基本原理——RANSAC
  3. windows查看Python安装目录
  4. 可设置指定时间自动消失的 MessageBox实现
  5. Geek的入门神器:micropython-能跑python的stm32开发板
  6. NEERC 17 G.The Great Wall
  7. gwt格式_使用Spring Security保护GWT应用程序的安全
  8. Win7旗舰版系统如何设置定时关机
  9. SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
  10. WIN7 VS2010下配置 CGAL-4.7
  11. 《程序员自我修养》读书笔记 第三章 目标文件里面有什么
  12. spring源码-自动注入
  13. 基于STM32构建EtherCAT主站(SOEM方案)2
  14. oracle12c分片应用场景,Oracle 12cR2数据库(Oracle12.2)新特性之四:Sharding 的增强...
  15. photoshop cs5 中 复制图层的快捷键是那个
  16. OpenCV读取、保存视频
  17. freeswitch部署及网关调试
  18. ios微信浏览器App下载链接怎样跳转到苹果App Store
  19. pycharm跑程序时出现Process finished with exit code -1073740791 (0xC0000409)
  20. 将字符串中的小写字母转换成大写字母

热门文章

  1. ACL'22 | 关系抽取和NER等论文分类整理
  2. ACL2021 | OntoED:利用本体表示学习实现低资源的事件抽取
  3. 一文超详细讲解文本风格迁移
  4. 【ACL2020放榜!】事件抽取、关系抽取、NER、Few-Shot 相关论文整理
  5. 学术分享 | 没有导师的指导,研究生如何阅读文献、提出创见、写论文?
  6. 写题10分钟,写题解8小时,一道头条面试题,真心难。
  7. embedding与pytorch中squeeze()和unsqueeze()函数介绍
  8. 李宏毅机器学习——深度学习的Tips
  9. 计算机领域国际会议分类及排名
  10. 折线图后面无数据_老板让数据师分析二八法则,此图表完美解决,项目管理师专用图表...