iphone学习笔记 – UIView

来源:互联网 发布:手机买火车票软件 编辑:程序博客网 时间:2024/06/09 15:53
几乎所有出现在iPhone屏幕上的内容都是视图。视图的作用类似于一块画布,可以在上面绘制各种颜色、图片和按钮。可以在屏幕中拖动它们,也可以重新调整他们的大小,还可以对它们进行分层。

一个窗口可以有多个视图,这是iphone界面的核心规则。view是GUI构建块,它们提供在屏幕上显示的可视元素,并和用户发起交互。每个 iPhone用户界面都是通过一个UIWindow中显示的UIView构建的。UIWindow就是一个特殊的UIView。窗口是所有view的容器,他显示层次的根。

1. 层次结构。

iphone应用程序,所有视图都是基于树的层次结构排序的。每个视图都可以有0到无穷个子试图。应用程序将会决定视图的布局方式和从属关系。子试图按顺序在屏幕上从后往前显示内容。只有表单中已绘制的部分才会显示出来,而未绘制部分允许用户看到表单后面的可视元素。

可以用下面的方法在程序中管理子试图:

  • 添加子视图, 可以调用[parentView addSubview: child]。 新添加的子视图通常显示在屏幕的最前面
  • 查询某视图的全部子试图的方法是调用其[parentView subviews]。将会返回一组视图,从后向前排序
  • 使用[childView removeFromSuperview]删除视图中的子视图
  • 使用[parentView exchangeSubviewAtIndex: i withSubviewAtIndex: j]对视图重新排序。使用bringSubviewToFront:或sendSubviewToBack:将子视图向前或者向后移动
  • 使用setTag:给子视图添加标记。通过子视图编号,可以用[parentView viewWithTag:]从层次结构中检索出该视图

2. 几何特征

每个视图都使用一个边框定义其界限。这个边框定义了视图的轮廓:其位置、宽度和高度。对于边框,通常表示由原点(CGPoint, x和y)和大小(CGSize,宽度和高度)

  • CGRect

CGRect结构在屏幕上定义了一个矩形。它包含原点(rect.origin)和大小(rect.size)。一下函数非常重要:

    • CGRectMake(origin.x, origin.y, size.width, size.height)在代码中定义矩形
    • NSStringFromCGRect(someCGRect)把CGRect结构转变为格式化字符串
    • CGRectFromString(aString)由字符串表示恢复出矩形
    • CGRectInset(aRect)用来创建较小或者较大的矩形(中心点相同)。使用正的内嵌值表示较小的矩形,使用负的内嵌值表示较大的矩形
    • CGRectIntersectsRect(rect 1, rect 2)可以判断矩形结构是否交叉,两个矩形对象是否重叠
    • CGRectZero是一个高度和宽度为零、位于(0,0)的矩形常量。需要创建边框但是还不确定边框大小或者位置时,可以使用此常量。
  • CGPoint和CGSize

CGPoint表示位置,CGSize表示大小

  • 定义位置

可以通过设置中心点(CGPoint)或边界(CGRect)定义视图的位置。

  • 转换

标准Core Graphics调用会实时转换视图。任何UIView子类的drawRect:方法都提供通过低级Core Graphics调用进行绘图的入口点。 在调用Core Graphics函数时,记住Quartz从左下方建立坐标系,而UIViews的原点位于左上方。

  • 其他视图特征

除了物理屏幕布局之外,还可以设置以下视图特征

    • 每个视图都有半透明要素(alpha),其值介于不透明和透明之间。可以通过[myView setAlpha:value]来调整它
    • 可以为视图背景制定一个颜色。[myView setBackgroundColor:[UIColor redColor]]
  • 视图布局

iphone3的屏幕分辨率是320×480, iphone4的屏幕分辨率是640×960. 屏幕顶部的标准状态栏都占用20像素的高度。要查询状态栏边框,可以调用[[UIApplication sharedApplication] statusBarFrame]. 要隐藏状态栏,可以调用如下方法:[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]. 或者在应用程序的Info.plist文件中将UIStatusBarHidden设置未<true/>

3. UIView动画

UIView动画对于在视图的当前状态和更改后的状态之间构建可视桥梁非常理想。动画变化包括以下方面:

  • 位置变化 – 在屏幕上移动视图
  • 大小变化 – 更新视图边框
  • 透明度变化 – 更新视图的alpha值
  • 对视图应用的旋转或其他放射转换的变化

UIView动画以块的形式工作,即每次执行一项完整的事务。块以beginAnimations:context:调用开始, 以commitAnimatios结束。在位于这两个调用之间的块中,定义动画运行的方式并执行实际的视图更新。你将使用的动画控件包括以下几个:

  • beginAnimations:context。 标记动画块的开始
  • setAnimationCurve。定义d’o'n动画加速及减速的方式。一般都采用渐入/渐出(UIViewAnimationCurveEaseInOut), 不是选择其他曲线。
  • setAnimationDuration. 以秒为单位指定动画的长度。
  • commitAnimations。标记动画块结束
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子学习不认真马虎怎么办 孩子做作业不认真马虎怎么办 一年级小孩学习不认真怎么办 孩子做题审题不认真怎么办 初二孩子不认真审题怎么办 孩子总是粗心抄错题看错题怎么办 孩子总马虎我要怎么办 年检标志跟车牌号不一样怎么办 纹完身后喝酒了怎么办 孩子学习态度不端正怎么办 孩子高考三模考差了家长怎么办 一年级学生学习马虎大意怎么办 一年级下册孩子做作业马虎怎么办 一年级孩子做题马虎怎么办 四年级小孩不喜欢数学该怎么办 工作出了大错误怎么办 遇到不讲道理的人怎么办 四岁宝宝爱生闷气怎么办 一岁宝宝没耐心怎么办 孩子挑食 幼儿园老师该怎么办 小孩被惯的无法无天怎么办 高中的儿子不写作业怎么办 儿子总是不写作业怎么办 长鸡眼脚背肿了怎么办 脚上反复长鸡眼怎么办 脚底长鸡眼很痒怎么办 小脚趾上长鸡眼怎么办 6岁宝宝不爱学习怎么办 上班站久了腿肿怎么办 站时间长了腿肿怎么办 孩子做作业老是粗心大意怎么办 高中孩子没学习兴趣怎么办 初三孩子失去学习兴趣怎么办 初二对学习兴趣不大怎么办 脸上痒发红发肿怎么办 孩子作业拖拉爱丢三落四怎么办 腿肌肉按摩肿了怎么办 孩子上一年级成绩差怎么办 小孩脖子拧筋了怎么办 小孩塑料玩具拧不出来怎么办 一年级孩子做数学题粗心怎么办