iOS基础 - UIScrollView
一.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 是否正在缩放
二、 手势缩放
- 设置UIScrollView的id<UISCrollViewDelegate> delegate代理对象
- 设置minimumZoomScale :缩小的最小比例
- 设置maximumZoomScale :放大的最大比例
- 让代理对象实现下面的方法,返回需要缩放的视图控件
- (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 { }
iOS基础 - UIScrollView的更多相关文章
- iOS基础UI控件介绍-Swift版
iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- iOS 基础日记-修饰符
今晚随便温习了一下iOS 基础关于修饰符这块的东西,下面简单的来描述一下,其中有的也是在网络学习到的: strong与weak是由ARC新引入的对象变量属性 ARC的解释:ARC引入了新的对象的生命周 ...
- iOS基础问答面试
<简书社区 — Timhbw>iOS基础问答面试题连载(一)-附答案:http://www.jianshu.com/p/1ebf7333808d <简书社区 — Timhbw> ...
- [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)
A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不 ...
- [置顶] IOS 基础入门教程
IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...
- iOS程序-UIScrollView的基本使用
iOS程序-UIScrollView的基本使用 scrollView的几个属性contentSize contentOffset contentInset 1.不能向上滑动很可能是因为contentS ...
- iOS 基础:Frames、Bounds 和 CGGeometry
https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...
- iOS 基础入门--Bull' Eye 小游戏
说明 Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...
随机推荐
- asp.net学习之再论sqlDataSource
原文:asp.net学习之再论sqlDataSource 本节从上一节没有阐述的几个方面,再讨论一下SqlDataSource的用法及注意的事项. 上一节的链接地址如下:http://www. ...
- 银联+移动+三星PK微信、余额宝
在不远的将来,你可以扔掉钱包,扔掉信用卡,揣着手机买东西. 银联.移动.三星这些不同的行业大佬,因为这个目标,被一款名叫NFC的支付技术连接在了一起. 这场游戏的参与者众多,一个合纵连横的时代正在到来 ...
- LeetCode Merge k Sorted Lists 解决报告
https://oj.leetcode.com/problems/merge-k-sorted-lists/ 归并K已经整理阵列,和分析算法的复杂. 解决报告:无论是不考虑优化,最简单的实现是要重新走 ...
- Swift_3_功能
import Foundation println("Hello, World!") //声明函数 不带参数 无返回值 func func1(){ } //一个函数 传入两个Str ...
- WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...
- User、Role、Permission数据库设计ABP
ABP 初探 之User.Role.Permission数据库设计 (EntityFramework 继承的另一种使用方法) 最近群里(134710707)的朋友都在讨论ABP源码,我把最近学习的内容 ...
- Nyoj 一笔画问题(图论)
描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来. 规定,所有的边都只能画一次,不能重复画. 输入 第一行只有一个正整数N(N&l ...
- 【笨木头Lua专栏】基础补充04:迭代器初探
今天学习的内容还蛮有意思的,让我兴奋了一下~ 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明,原文地址: http://www.benmutou.com/archives/1714 文章来源:笨木 ...
- css+html简单的布局demo
于html介绍css作风.可以改变html块状布局,局更加美观.接下来看一个基础布局的小样例: <html> <head> <meta http-equiv=" ...
- C#二维码生成与解码
[窗体效果图] [程序源代码] using System; using System.Collections.Generic; using System.ComponentModel; using S ...