本文是我在学习OC中的一些经验总结,在学习中总结了常用的Mac技巧,欢迎群友对本文提出意见,如有问题请联系我。

一 什么是UIScrollView

1)移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限

2)当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容

3)普通的UIView不具备滚动功能,不适合显示过多的内容

4)UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容

二 UIScrollView的用法

1)将需要展示的内容添加到UIScrollView中

2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉它滚动的范围(能滚多远,滚到哪里是尽头)

 #import "ViewController.h"

 @interface ViewController ()

 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

 @end

 @implementation ViewController

 - (void)viewDidLoad {
[super viewDidLoad]; self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, ); } @end

第14行: 表示UIScrollView只能纵向滚动,不能横向滚动。

三 UIScrollView的常见属性

1)@property(nonatomic) CGPoint contentOffset;

这个属性用来表示UIScrollView滚动的位置(其实就是内容左上角与scrollView左上角的间距值

2)@property(nonatomic) CGSize contentSize;

这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)

3)@property(nonatomic) UIEdgeInsets contentInset;

这个属性能够在UIScrollView的4周增加额外的滚动区域,一般用来避免scrollView的内容被其他控件挡住

4)隐藏水平滚动条

scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;

5) 去掉弹簧效果

scrollView.bounces = NO;

例子:在UIScrollView里加一个UIImageView

 UIImageView * imageView = [[UIImageView alloc ]init];
UIImage * image = [UIImage imageNamed:@""];
imageView.image = image;
imageView.frame = CGRectMake(, , image.size.width, image.size.height);
[self.scrollView addSubview: imageView];
self.scrollView.contentSize = CGSizeMake(image.size.width, image.size.height);

以上代码等同于以下代码的效果。

 UIImageView * imageView = [[UIImageView alloc ]initWithImage: [UIImage imageNamed:@""] ]  ;
[self.scrollView addSubview: imageView];
self.scrollView.contentSize = imageView.frame.size;

UIKit 坐标体系

在UIKit坐标体系中,在X轴往右,X值增加。在Y轴往下,Y值增加。

contentOffset偏移量

1)与UIKit坐标体系正好相反,往左边移X轴增加,往上边移Y轴增加。

2)contentOffset的计算方式:内容的左上角和ScrollView的左上角的X&Y的差值,差值就有正负;和UIKit的坐标系正好相反。

例子:通过左,右,上,下 按钮移动图片 

 //图片向左边移动
- (IBAction)left:(id)sender {
self.scrollView.contentOffset = CGPointMake(, self.scrollView.contentOffset.y ); } //图片向右边移动
- (IBAction)right:(id)sender {
CGFloat offSetX = self.scrollView.contentSize.width - self.scrollView.frame.size.width;
self.scrollView.contentOffset = CGPointMake( offSetX , self.scrollView.contentOffset.y );
} //图片向上边移动
- (IBAction)top:(id)sender {
self.scrollView.contentOffset = CGPointMake( self.scrollView.contentOffset.x, );
} //图片向下边移动
- (IBAction)bottom:(id)sender {
CGFloat offSetY = self.scrollView.contentSize.height - self.scrollView.frame.size.height;
self.scrollView.contentOffset = CGPointMake( self.scrollView.contentOffset.x, offSetY);
}

四 动画

设置动画效果

[UIView beginAnimations:nil context:nil ];
[UIView setAnimationDuration:1.5]; //自定义动作 。。。 [UIView commitAnimations];

轻量级应用开发之(04)UIScrollView-1的更多相关文章

  1. iOS开发UI篇—UIScrollView控件实现图片缩放功能

    iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...

  2. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  3. iOS开发UI篇—UIScrollView控件实现图片轮播

    iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "YYV ...

  4. 【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

    原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播 ...

  5. 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录

     前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...

  6. 基于flask的轻量级webapi开发入门-从搭建到部署

    基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...

  7. [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建

    一.前言 intel-iot-examples-datastore 是Intel提供用于所有Edison开发板联网存储DEMO所需要的服务器工程.该工程是基于nodejs和redis写成的一个简单的工 ...

  8. iOS开发——UI基础-UIScrollView

    一.UIScrollView使用的步骤 1.创建UIScrollView 2.将需要展示的内容添加到UIScrollView中 3.设置UIScrollView的滚动范围 (contentSize) ...

  9. 前端开发工程师 - 04.页面架构 - CSS Reset & 布局解决方案 & 响应式 & 页面优化 &规范与模块化

    04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 课堂交流区 水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? & ...

  10. 《Invert》开发日志04:工具、资源和服务

    这篇记录一下<Invert>用到的工具.资源和服务.秉承两个原则:一,绝不侵犯版权:二,尽量节省开支. 首先是工具.游戏引擎使用免费的Unity个人版: 编码IDE使用免费的VisualS ...

随机推荐

  1. Window.open()方法参数详解

    Window.open()方法参数详解 1, 最基本的弹出窗口代码   window.open('page.html'); 2, 经过设置后的弹出窗口   window.open('page.html ...

  2. 025医疗项目-模块二:药品目录的导入导出-HSSF导入类的封装

    上一篇文章提过,HSSF的用户模式会导致读取海量数据时很慢,所以我们采用的是事件驱动模式.这个模式类似于xml的sax解析.需要实现一个接口,HSSFListener接口. 原理:根据excel底层存 ...

  3. Linux 进程与线程四(加锁--解锁)

    线程共享进程的内存空间,打开的文件描述符,全局变量. 当有多个线程同事访问一块内存空间或者一个变量.一个文件描述符,如果不加控制,那么可能会出现意想不到的结果. 原子操作 对于我们的高级语言(C语言, ...

  4. 如何解决机器重启后MySql服务跑不起来了1067,附解决过程

    今个一位同事的mysql跑不起来了,之前还好好的,问我怎么恢复,我没在她出问题的机器上弄,在自己机器上试的,最终在CTO的指导下解决了,现记录于此. 1,首先把她的mysql安装文件夹.数据结构文件. ...

  5. 如何自定义kindeditor编辑器的工具栏items即去除不必要的工具栏或者保留部分工具栏

    kindeditor编辑器的工具栏主要是指编辑器输入框上方的那些可以操作的菜单,默认情况下编辑器是给予了所有的工具栏.针对不同的用户,不同的项目,不同的环境,可能就需要保留部分工具栏.那么我们应该如何 ...

  6. Java compiler level does not match the version of the installed Java project facet.(转)

    Java compiler level does not match解决方法 从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource P ...

  7. oracle文字与格式字符串不匹配的解决

    oracle文字与格式字符串不匹配的解决 oracle的日期时间类型 在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如insert into CUSLOGS(STAR ...

  8. 20135326、20135303-linux实验一实验报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础  班级:1353 姓名:王亦可 .魏昊卿 学号:20135326.20135303 成绩:       ...

  9. Bootstrap 排版

    Bootstrap 使用 Helvetica Neue. Helvetica. Arial 和 sans-serif 作为其默认的字体栈. 使用 Bootstrap 的排版特性,您可以创建标题.段落. ...

  10. 分享:大晚上用自己的锤子手机跨系统刷MIUI,跌宕起伏啊!!

    序言: 写这篇博客之前问了一下博客园官方,能不能写关于刷机这一方面的,官方还是比较通情达理的,说技术类没有限制的,那样我就放心的写了.今天早上在博客园中稍微逛了一下,感觉似乎很少有关于刷机这一方面的, ...