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 ...
随机推荐
- 使用C#版OpenCV进行圆心求取
OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com/shimat/opencvsharp. 该源码是 BSD开放协 ...
- JS案例练习-手机微信聊天对话框
先附图 CSS部分: <style> body{} *{;} li{list-style: none;} .container{ width:310px; height:600px; ma ...
- linux 命令——35 ln(转)
ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要 ...
- IOS PickerView使用
- (void)viewDidLoad { [super viewDidLoad]; // 1.创建pickerview // pickerview有默认的frame UIPickerView *pi ...
- World Wind Java开发之十一——加载热点信息(仿Google Earth)(转)
在GE的图层中有一个照片图层,在浏览时可以看到各地的一些图片,我们称之为热点信息,如下图所示: 再来看下本文的实现效果: 效果是不是很像呢,其实实现这个很简单,参照examples中的Balloons ...
- 【BZOJ1101】[POI2007] Zap(莫比乌斯反演)
点此看题面 大致题意: 求\(\sum_{x=1}^N\sum_{y=1}^M[gcd(x,y)==d]\). 一道类似的题目 推荐先去做一下这道题:[洛谷2257]YY的GCD,来初步了解一下莫比乌 ...
- 【BZOJ4001】[TJOI2015] 概率论(卡特兰数)
点此看题面 大致题意: 问你一棵\(n\)个节点的有根二叉树叶节点的期望个数. 大致思路 看到期望,比较显然可以想到设\(num_i\)为\(i\)个节点的二叉树个数,\(tot_i\)为所有\(i\ ...
- SVN .a文件丢失问题
只需2张图 这样就ok 了
- 2018.6.19 Java核心API与高级编程实践复习总结
Java 核心编程API与高级编程实践 第一章 异常 1.1 异常概述 在程序运行中,经常会出现一些意外情况,这些意外会导致程序出错或者崩溃而影响程序的正常执行,在java语言中,将这些程序意外称为异 ...
- 解决linux系统CentOS下调整home和根分区大小《转》
转自http://www.php114.net/2013/1019/637.html 目标:将VolGroup-lv_home缩小到20G,并将剩余的空间添加给VolGroup-lv_root 1 ...