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 Dev 深入浅出 导航控制器(二)with表视图相关操作

今天的内容是在上一篇文章(iOS Dev 深入浅出 导航控制器(一)>>)的程序上,进行进一步操作,主要是为上一个程序添加更多的功能,来描述表视图控制器,导航控制器和表视图控制器是我们iOS应用中最常...

深入浅出CChart 每日一课——第十课 分裂视图,锤子肖哥之错位人格

从这节课开始,笨笨给大家介绍几种CChart支持的复杂视图。 本节课首先介绍分裂视图。 这里的分裂当然不是湾湾阿扁搞的分裂。所谓分裂视图,也就是分区视图,就是把绘图区域分成几块,每一块单独绘制图形。 ...
  • baita96
  • baita96
  • 2013年09月18日 21:57
  • 1976

T-SQL查询进阶--深入浅出视图

本文出处--http://www.cnblogs.com/CareySon/archive/2011/12/07/2279522.html   视图可以看作定义在SQL Server上的虚拟表.视...

android视图学习---Android深入浅出之Surface[1]

一 目的 本节的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的。当然,鉴于SurfaceFlinger的复...

深入浅出MFC文档/视图架构之基本概念

深入浅出MFC文档/视图架构之基本概念 引言   MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要...

深入浅出CChart 每日一课——第十二课 共享X轴视图,穆斯林的婚礼

这一课笨笨给大家介绍另一种具有分层功能的视图,名为共享X轴视图。 和上一课的分层视图相比,共享X轴视图的特点当然就是所有图层只有一个X轴,也就是所有数据在X方向的比例尺是一样的,实际问题中大多数情况都...
  • baita96
  • baita96
  • 2013年09月19日 08:11
  • 2189

深入浅出CChart 每日一课——第十一课 分层视图,楼上七班的女孩

在Origin等成熟的商业软件中,分层功能对于具有多个比例尺的图像绘制来说,是必不可少的。 CChart目前包含了两种具有分层功能的视图。一种名字就叫分层视图,这种视图所有图层共享绘图区域,每个图层单...
  • baita96
  • baita96
  • 2013年09月18日 22:58
  • 1848

iOS 弹出视图

  • 2017年07月21日 12:21
  • 92KB
  • 下载

IOS 滚动视图

  • 2014年12月25日 14:44
  • 32KB
  • 下载

第七章:视图解析器——深入浅出学Spring Web MVC

在Spring Web MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。那么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS的视图深入浅出
举报原因:
原因补充:

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