iOS的视图深入浅出

转载 2012年03月22日 23:09:39

我前几天买了一堆iOS相关开发的书,花了一天时间,本来看能否学习一些经验类的内容,最后发现还是比较让人失望的。

例如《iOS软件开发揭秘》,上面有这么一句话:掌握iPhone&iPad开发核心技术,让普通开发者创造财富神话!够诱惑人了吧?

这本书我前天买的,如果谁要买,我2块5转让。

再例如《iPad应用开发实践》,这本书我也2块5转让,如果大家觉得我可怜,可以2一把,5块转让。

我这几天一直很烦,决定自己每天写一点内容,和大家一起进步。我不会拿去出版的,你喜欢就看,不喜欢你可以后面留言骂,总之,我要不要你钱。

那就开始吧,我今天的主题主要围绕视图展开。谁让我们iOS震撼我们的是用户体验和交互了!

我今天也不说太多的视图细节,只说些原理的东西,让大家知其所以然,我陆续会在后面的文章中推出视图相关的一系列技巧。

在我所了解的所有用户界面编程中,在技术层面的思路几乎都是框框套框框。

那我们要让框框套框框之后的效果让用户感觉很爽,就需要这些框框具备一定的特性了。最容易想到的有两个:

1、每个框框应该可以透明,可以不透明,也可以半透明,当然你可以在该框框上画任何你想要的图像。

2、每个框框除了可以直接被修饰之外,还可以在其里面搁放其它框框。具体如何搁放,由当前框框自己来组织。

你看前面的两个的特性,我们就会完成很多特别爽的效果,例如第一个特性我们就能给一个导航条绘制自己的背景,你只需重写每个视图的drawRect.至于如何绘,那就是另外一个主题,但至少你明白我的意思了吧?

第二个特性让我们至少闭上眼睛可以明白很多东西。例如一个框框放到另一个框框你至少得告诉我位置吧?是:那就是frame,bounds,center,层什么的。

好,我们更进一步分析,一个视图框架要用户继续接着爽,还应该有什么特性。

我们最常见的就是当最外面的框框被改变大小时,整个框框的变化应该能够跟上,并且不能乱套吧例如我们希望一个工具条一直在窗口的下方,其高度不变,但宽度要随着窗口变;再例如。。。。总之,你想到都应该有吧?那你闭上眼睛想了,当最外面框框被变大小了,他应该怎么调整里面的框框呢?

我理解就几个点:

1、特别武断的调整。二话不说,自己直接根据自己的需要进行调整。例如重些layoutSubviews方法。

2、和自己里面的框框约定一些可能的方式。在自己被调整之后,去一个个询问其里面的框框支持的模式,然后去调整。依次类推往下调整。例如contentMode和contentStretch等。

布局就这个意思,你理解了就行。

我们经常看到iOS上很多特酷的视图切换效果,不错吧?那我们来聊聊这个?

在前面我也说过框框套框框需要层的概念,是这样吧?只是iOS中的层(CALayer,核心动画层)的引入不仅仅只是层的概念,或者说是谁在上谁在下的概念。

这里的层类似对每一个框框(视图)建立了一个投影,如果那个框框要离开,那个框框要插入,都可以不考虑太多框框的东西,直接对投影进行一次投影,然后在一张投影图上进行各种变换矩阵算法即可。明白了吗?大家看过牛皮影嘛?就那个意思?

有时候,我们不是要把一个框框从父亲框框里干掉,我们可以removeFromSuperview,在干掉之前你可以决定如何把这个框框消失,原则说上,基于自由的变换函数,你什么变换都可以搞。

最后当然是要谈视图的事件机制了,这基本上和你见过的事件机制都是一样的,只是触摸,多点触控等概念你要知道。这块希望我有更加通俗的专题来介绍。

事件一般的传递思路是:在应用程序主循环中监听事件队列(写过游戏的人都知道我说什么),如果有事件,将根据事件的特点,滤出根对象开始遍历所有的子对象,然后从最叶子节点开始判断是否监听事件,如果监听,那么是否继续往回传都将交给它来决定。

这是我说的视图级别的事件传递j机制啊。其它的我们再聊。

http://hi.baidu.com/janins/blog/item/8bd1cfe832c01f3e63d09f64.html

iOS - 点击弹出自定义视图

demo效果这个效果比较简单,直接记录一下。自定义一个继承自UIView的视图,定义两个方法一个显示方法,一个消失方法。/** * 显示属性选择视图 * * @param view 要在哪个...
  • fanxiaomeng92
  • fanxiaomeng92
  • 2017年06月07日 21:09
  • 652

iOS开发弹出半透明视图

一、项目问题项目中经常会遇到需要弹出一个半透明视图的情况,先前自己想着用UIWindow做,后来发现因为界面控制器复杂不好管理,于是放弃,度娘了一下,发现直接用modal的方法就可实现,简单又明了。先...
  • quan0981163
  • quan0981163
  • 2017年02月03日 18:48
  • 1887

iOS10 UI教程子视图和父视图UI层次结构和Views继承

iOS10 UI教程子视图和父视图UI层次结构和Views继承
  • u014621518
  • u014621518
  • 2016年11月25日 10:08
  • 526

IOS学习整理(一)视图层次结构与视图控制器

最近开始学习ios编程,因为以前学习过c/c++等编程语言,所以初略过了一遍object c的语法基础。之后开始学习ios的控件,这里主要整理一下关于ios控件的api,加深自己的印象。学习书籍是io...
  • aa3214560
  • aa3214560
  • 2015年07月25日 09:43
  • 1007

iOS个人整理24-集合视图--UICollectionView

UICollectionView
  • u010330109
  • u010330109
  • 2016年03月09日 17:35
  • 944

iOS视图控制器编程指南 --- 实现一个容器视图控制器

容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式。容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型。例如,在UIKit中的容器视图控制器包括UI...
  • Enter_
  • Enter_
  • 2016年05月02日 16:48
  • 4569

iOS狂暴之路---视图控制器(UIViewController)使用详解

一、前言在之前的一片文章中已经介绍了 从iOS的第一个应用中能学习到哪些知识点 在那篇文章中主要介绍了一个iOS程序的启动过程和应用的几大对象,以及应用的生命周期,同时也介绍了应用中的控制器知识点,介...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2017年02月13日 18:41
  • 16927

iOS中视图切换的四种方式

iOS中常用的四种视图切换的方式有UITabBarController、UINavigationController、模态窗口以及添加为子视图的方式 一、简单分析一下各自的原理: * UITabB...
  • u011774517
  • u011774517
  • 2017年02月09日 16:06
  • 402

iOS自定义弹出视图,以及简单的手势讲解

学习iOS也有一段时间了。也在试着用iOS来写项目,感谢各路大神的帮助,就不一一@了。本文只是记载本人的学习过程。                                       ...
  • quanhaoH
  • quanhaoH
  • 2014年12月09日 21:11
  • 1275

iOS遍历打印所有子视图

更人性化地带缩进&序号来层级打印view的所有subview
  • Cloudox_
  • Cloudox_
  • 2017年03月20日 20:09
  • 2971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS的视图深入浅出
举报原因:
原因补充:

(最多只允许输入30个字)