IOS开发学习笔记033-UIScrollView
1、滚动显示图片
如果图片过大,则需要滚动显示,这是需要用到类UIScrollView,可是实现控件的水平和垂直滚动。
可用三步实现:1 设置UIScrollView,2 设置UIImageView,3 设置UIScrollView的滚动 范围。
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 1、添加 scrollView,并设置可视范围
UIScrollView *scrollView = [[UIScrollView alloc] init];
scrollView.frame = CGRectMake(, , , ); // 可视范围
scrollView.backgroundColor = [UIColor grayColor];
[self.view addSubview:scrollView];
// 2、添加imageView
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"1.jpg"];
CGSize imageSize = imageView.image.size;
imageView.frame = CGRectMake(, , imageSize.width, imageSize.height);
[scrollView addSubview:imageView];
// 3、设置滚动范围
scrollView.contentSize = imageView.image.size;
}
2、其他属性设置
// 其他属性
// 是否显示滚动条
//scrollView.showsHorizontalScrollIndicator = NO;
// 弹簧效果
//scrollView.bounces = NO;
// 额外显示区域 top left bottom right
//scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
3、移动图片
添加四个按钮表示上下左右,通过按钮的tag来区分按钮。这里是使用3.5存得屏幕,分辨率大小固定,所以暂使用320*480。
给按钮绑定事件,然后实现方法如下:
// 上下左右移动
- (IBAction)allBtn:(UIButton *)sender
{
[UIView animateWithDuration:1.0 animations:^{
NSInteger btnTag = sender.tag;
CGPoint point = _scrollView.contentOffset; switch (btnTag) {
case : // 上
point.y -= ;
if (point.y < ) {
point.y = ;
}
break;
case : // 下
point.y += ;
if(point.y > )
{
point.y = ;
}
break;
case : // 左
point.x -= ;
if(point.x < )
{
point.x = ;
} break;
case : // 右
point.x += ;
if(point.x > )
{
point.x = ;
}
break;
default:
break;
} _scrollView.contentOffset = point; }];
}

4、缩放图片
缩放图片简单流程:
1、设置代理 delegate
2、遵守协议 UIScrollViewDelegate
3、设置缩放比例 minimumZoomScale,maxmumZoomScale
4、实现缩放方法 viewForZoomingInScrollView
4、1、设置代理 delegate
_scrollView.delegate = self; // 指向控制器
4、2、遵守协议 UIScrollViewDelegate
@interface ViewController () <UIScrollViewDelegate> // 遵守协议
{
UIScrollView *_scrollView;
UIImageView *_imageView;
}
@end
4、3、设置缩放比例 minimumZoomScale,maxmumZoomScale
// 设置缩放比例
scrollView.maximumZoomScale = 2.0;
scrollView.minimumZoomScale = 0.2;
4、4、实现缩放方法 viewForZoomingInScrollView
// 图片缩放,代理方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageView; // 返回缩放对象
}
代码
//
// ViewController.m
// UIScrolleView-大图片
//
// Created by Christian on 15/5/26.
// Copyright (c) 2015年 slq. All rights reserved.
// #import "ViewController.h" @interface ViewController () <UIScrollViewDelegate> {
UIScrollView *_scrollView;
UIImageView *_imageView;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. // 1、添加 scrollView,并设置可视范围
UIScrollView *scrollView = [[UIScrollView alloc] init];
//scrollView.frame = CGRectMake(0, 0, 250, 250); // 可视范围
scrollView.frame = self.view.bounds;
scrollView.backgroundColor = [UIColor grayColor];
[self.view addSubview:scrollView]; // 2、添加imageView
UIImage *image = [UIImage imageNamed:@"1.jpg"];
_imageView= [[UIImageView alloc] initWithImage:image];
// CGSize imageSize = imageView.image.size;
// imageView.frame = CGRectMake(0, 0, imageSize.width, imageSize.height);
//
[scrollView addSubview:_imageView]; // 3、设置滚动范围
scrollView.contentSize = _imageView.image.size; // 其他属性
// 是否显示滚动条
//scrollView.showsHorizontalScrollIndicator = NO;
// 弹簧效果
//scrollView.bounces = NO;
// 额外显示区域 top left bottom right
//scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20); // 获得当前显示区域位于图片的位置,左上角坐标
// scrollView.contentOffset = CGPointEqualToPoint(0, 0);
_scrollView = scrollView; // 缩放图片,要遵守协议 UIScrollViewDelegate
_scrollView.delegate = self;
// 设置缩放比例
scrollView.maximumZoomScale = 2.0;
scrollView.minimumZoomScale = 0.2;
} // 上下左右移动
- (IBAction)allBtn:(UIButton *)sender
{
[UIView animateWithDuration:1.0 animations:^{
NSInteger btnTag = sender.tag;
CGPoint point = _scrollView.contentOffset; switch (btnTag) {
case : // 上
point.y -= ;
if (point.y < ) {
point.y = ;
}
break;
case : // 下
point.y += ;
if(point.y > )
{
point.y = ;
}
break;
case : // 左
point.x -= ;
if(point.x < )
{
point.x = ;
} break;
case : // 右
point.x += ;
if(point.x > )
{
point.x = ;
}
break;
default:
break;
} _scrollView.contentOffset = point; }];
}
// 图片缩放,代理方法
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return _imageView;
} @end
源代码: http://pan.baidu.com/s/1o6FXo4E
5、分页
5、1、少量图片展示

如图所示,少量图片的分页,可以使用以上方式,直接创建一个scrollView和多个imageView。按照顺序将iamgeView添加到scrollView,每次滚动时只需改变scrollView的contentOffset属性就可以显示不同的图片.
可再viewDidLoad中添加如下代码,有5张图片用来显示
CGFloat w = _scrollView.frame.size.width;
CGFloat h = _scrollView.frame.size.height;
for (int i = ; i < kCount; i ++)
{
UIImageView *imageView = [[UIImageView alloc] init];
// 1、按照顺序添加图片,y值相同,x值递增
imageView.frame = CGRectMake(i * w, , w, h); NSString *imageName = [NSString stringWithFormat:@"%d.jpg",i+];
imageView.image = [UIImage imageNamed:imageName]; [_scrollView addSubview:imageView]; }
// 隐藏水平滚动条
_scrollView.showsHorizontalScrollIndicator = NO;
// 2、启用分页
_scrollView.pagingEnabled = YES;
// 3、设置滚动范围,宽高
_scrollView.contentSize = CGSizeMake(kCount * w, );
6、UIPageControl控件

左右滑动,会显示当前页的位置,使用方式如下:
// page control控件
// 1、初始化一个pageControl
_pageControl = [[UIPageControl alloc] init];
// 2、设置frame
_pageControl.center = CGPointMake(w * 0.5, h - );
_pageControl.bounds = CGRectMake(, , , );
// 3、设置页数
_pageControl.numberOfPages = kCount;
// 4、设置选中页的颜色
_pageControl.currentPageIndicatorTintColor = [UIColor redColor];
// 5、关闭点击小按钮附近的翻页功能
_pageControl.enabled = NO;
// 6、代理方法中实现滚动页码的改变 // 7、添加到view
[self.view addSubview:_pageControl];
代理方法中实现定位到当前页
// 正在滚动时调用
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{ int page = scrollView.contentOffset.x / scrollView.frame.size.width;
//NSLog(@"scrolling:%d",page);
// 6、设置当前页码
_pageControl.currentPage = page;
}
7、键盘处理
新建几个text field 控件,可以设置控件的属性keyboard type 为所需类型

- (IBAction)exitKeyboard
{
// 方法1:谁调出键盘,谁负责退出键盘,比较麻烦,需要各自退出
//[_nameText resignFirstResponder]; // 方法2:退出所有view的子控件的键盘
[self.view endEditing:YES]; }
推荐使用方法2
给键盘添加一个ToolBar,其中toolBar通过xib文件创建

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. UIToolbar *toolbar = [[NSBundle mainBundle] loadNibNamed:@"keyboard" owner:nil options:nil][];
// 将toolbar显示到键盘顶部
_nameText.inputAccessoryView = toolbar;
_phoneText.inputAccessoryView = toolbar;
_birthdayText.inputAccessoryView = toolbar;
_addressText.inputAccessoryView = toolbar;
}
8、MVC模式
主要三者之间的关系:控制器负责通信,控制器可以访问模型,模型不可访问控制器。视图可以访问控制器,控制器也可以访问视图。视图和模型之间不存在访问关系。

IOS开发学习笔记033-UIScrollView的更多相关文章
- iOS开发学习笔记:基础篇
iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...
- ios开发学习笔记(1)
objective-c基础总结 第一二章 1.application:didiFinishLauchingWithOptions:程序启动后立即执行 2.启动界面代码格式:self.window = ...
- iOS开发学习笔记
1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...
- ios开发学习笔记(这里一定有你想要的东西,全部免费)
1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [ ...
- IOS开发学习笔记017-第一个IOS应用
第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...
- (ios开发学习笔记一)ios项目文件结构
转自:http://www.cnblogs.com/macroxu-1982/archive/2012/07/31/2616389.html 下面是单个窗体项目例子,我们从这个项目开始,说明ios项目 ...
- iOS开发学习--纯代码 UIScrollView 无限循环的实现——代码类封装
一个简单的利用UIScrollView 实现的无线滚动banner,下面的代码实现,因为封装问题,对两个及一下的view 支持出了一点问题(view是传参进来的,不可以生成两份),但是原理是正确的,智 ...
- ios开发学习笔记040-autolayout 第三方框架Masonry
不管是是界面创建约束还是代码创建约束,苹果官方提供的方式都比较繁琐.所以出现了第三方框架. Masonry 在github地址如下: https://github.com/SnapKit/Masonr ...
- IOS开发学习笔记036-UIScrollView-循环自动滚动
实现scrollView的自动循环滚动,需要实现几个方法. 其中scrollView中始终保存三张图片,其他的图片在滚动到时再进行加载. 循环的实现主要是在setUpdate 中,如果索引为0是第一个 ...
- IOS开发学习笔记035-UIScrollView-自动滚动
让图片自动滚动的话,需要使使用定时器,循环计算当前页的页码.并且在拖动图片时停止计时器,停止拖动时启动计时器. 定时器 方法1: performSelector [self performSelect ...
随机推荐
- URL最大长度问题
在http协议中,其实并没有对url长度作出限制,往往url的最大长度和用户浏览器和Web服务器有关,不一样的浏览器,能接受的最大长度往往是不一样的,当然,不一样的Web服务器能够处理的最大长度的UR ...
- Git 推送和删除标签
事实上Git 的推送和删除远程标签命令是相同的,删除操作实际上就是推送空的源标签refs:git push origin 标签名相当于git push origin refs/tags/源标签名:re ...
- [转贴] 2016一月12日起.NET 4, 4.5 and 4.5.1 停止安全更新、技术支持 or hotfix
[转贴] 2016一月12日起.NET 4, 4.5 and 4.5.1 停止安全更新.技术支持 or hotfix https://www.dotblogs.com.tw/mis2000lab/20 ...
- JQuery笔录
1.jQuery 的 hide() 函数,隐藏了 HTML 文档中所有的 <p> 元素.<script type="text/javascript">$(d ...
- JS中的toString()和valueOf()方法
1.toString()方法:主要用于Array.Boolean.Date.Error.Function.Number等对象转化为字符串形式.日期类的toString()方法返回一个可读的日期和字符串 ...
- POJ 1631 Bridging signals(LIS的等价表述)
把左边固定,看右边,要求线不相交,编号满足单调性,其实是LIS的等价表述. (如果编号是乱的也可以把它有序化就像Uva 10635 Prince and Princess那样 O(nlogn) #in ...
- POJ-3436 ACM Computer Factory---最大流+拆点
题目链接: https://vjudge.net/problem/POJ-3436 题目大意: 每台电脑有p个组成部分,有n个工厂加工电脑.每个工厂对于进入工厂的半成品的每个组成部分都有要求,由p个数 ...
- 数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次
[1] 严格意义上数据结构的概念 数据结构,一个简单的定义:相互之间存在一种或多种特定关系的数据元素的集合.即:数据结构 = 元素集合 + 元素间关系的集合 . 在讨论数据结构时,可以基于两个不同的层 ...
- tp5依赖注入(自动实例化):解决了像类中的方法传对象的问题
app\index\Demo1.php namespace app\index\controller; /* 容器与依赖注入的原理 ----------------------------- 1.任何 ...
- confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框。系统自带提示
W3C地址::::::: http://www.w3school.com.cn/jsref/met_win_confirm.asp http://www.w3school.com.cn/tiy/t ...