在正式进入UI之前,我们需要了解一些知识。

       苹果手机的分辨率:iPhone3GS  320*480; iPhone4和iPhone4S 640*960;iPhone5c、5S 640*1136;

iPhone6  750*1334; iPhone6plus 1080*1920。 

       屏幕尺寸如3.5英寸:320 * 480, 如果采用的是Retina屏,宽和高都要分别乘以2,这也就是为什么3GS和4同为3.5英寸,但是分辨率却差了4倍。

       学习UI需要使用xcode中空工程,iOS -> Application -> Empty Application.进入之后运行会出现设备的模拟器,通过command +1,+2,+3可以调整模拟器的大小分别100%,75%,50%。如果没有模拟器进入window -> device -> 添加设备模拟器。使用command + shift + h, 可以返回模拟器的主界面,输入两次h效果同iPhone双击home键。

        一个完整iOS App  = 各种各样的UI设计 + 业务逻辑 + 算法。

       iOS从2.0开始到7.0都是拟物化的设计风格,7.0则放弃了这一设计,以线条为主,更倾向于扁平化的设计风格。


一  UIWindow

       虽然我们还没学习UIView,但是你应当有一种意识,UIWindow是UIView的一个子类,继承其所有的属性、方法和实例变量。

       UIWindow有什么作用?

       UIWindow用来承载UIView的视图给用户,如果没有window,设备将是一片漆黑。

       UIWindow有什么特点?

       UIWindow伴随着整个应用程序的生命周期,知道app结束时才释放。我们通常不对它进行太多的设置和操作。一个app通常只有一个window。

       UIWindow如何创建对象?


        UIWindow *window = [UIWindow alloc] initWithFrame:[[UIScreen  mainScreen] bounds]];

        self.window.backgroundColor = [UIColor  grayColor];

         [self.window  makeKeyAndVisible];


         以上代码对于刚从OC过来的同学来说有很多陌生的代码,建议进入头文件中去查看。mainScreen返回一个代表设备屏幕的对象,bounds是一个返回值为CGRect的实例方法。大家首先要树立一种控件也是一种类,格式和我们学得OC相同。CGRect 是一个结构体,有两个元素:CGPointer origin; CGSize  size; ,  CGPointer  也有两个元素: CGFloat x; CGFloat y;  CGSize 有两个元素: CGFloat width; CGFloat height;   其中的CGFloat就是double。


二   UIView

      view(是“视图”的意思):屏幕上的一块矩形区域。不同的空间对应着不同类型的视图。换句话说,UIView有很多子类,而且功能不尽相同。需要将UIView重视起来,APP中所有的可视化空间全部是UIView或者其子类。

      如何创建一个UIView对象?

      代码如下

       UIView *aView = [UIVew  alloc]initWithFrame:CGRectMake(CGFlaot x, CGFlaot y, CGFlaot width, 

       CGFloat heigth)];  // 开辟空间并初始化

       aView.backgroudColor = [UIColor redColor]; // 给属性赋值

       [self.window  addSubview: aView]; // 将视图添加到父视图中

       [aView  release] ;  // 释放aView的保有权


      首先add方法和集合类的对象一样自动保有元素的所有权,所以释放aView没有问题。

      其次, CGRectMake()是快速创建结构体的方法,frame是一个CGRect类型的结构体。

      最后,说明一下NSRect类型结构体重各元素的作用。

      要想在屏幕上画出一个矩形,首先知道位置,其次知道大小。CGRect的两个元素CGPointer和CGSize就是分别代表位置和大小。iOS中为了布局创建了平面坐标系。它的原点为屏幕的左上角。水平向右是X的正方向,垂直向下是Y的正方向。这样CGRect的4各元素就都清楚明白了。

      需要注意的是如果子视图超过了父视图的边界,超过的 部分是没有响应的。

     center

     center其实是frame的衍生品,他们两个完全等价。center就是值矩形视图的中心坐标。他有两个元素:CGFloat x,CGFloat y。 center.x = frame.origin.x + frame.size.width/2      center.y = frame.origin.y + frame.size.height/2  .

     bounds

     bounds是一个CGRect类型的结构体。只不过它是自己的坐标系,它的子视图要以这个坐标系为准。它可以设置左上角的坐标为任意值。使用较少。

     先说明一下frame、bounds、center的联系。

     当frame.origin变化时,center也是变化的,反之,亦然;当frame.size变化时,bounds的size也是变化的,反之亦然;当center变化时,bounds.origin是不变的,反之亦然。 

     重点说明一下UIView的方法、属性。

     1 插入元素方法

      addSubview:    , insertSubview:  atIndex,  insertSubview:  aboveSubview, insertSubview: belowSubview。 当UIView对象调用这些方法时,会将参数subview添加为自己的子视图。而且插入越早编号越靠前,离用户越远。这里透露一个小技巧,在控制台有一个交叉的两个矩形的图标,点击它可以查看层次。

     2  管理层次方法

      bringSubviewToFront:   ,   sendSubviewToBack:,   exchangeSubviewAtIndex:   withSubviewAtIndex:,     removefromSuperview. 可以用来调整和用户的距离。

     3 属性

     hidden  : 是否可见  BOOL

     alpha: 不透明度  CGFloat

     superview   返回父视图   UIView

     subv      返回子视图   NSArray

     tag    为对象添加标签,使用viewWithTag方法来调用对象。注意tag一般都大于1000;integer。


三  UILabel 

      UILabel: 是UIView的子类,可以显示文本。它在APP中出现的次数是最多的。

      属性:

      text:用来显示文本的内容,使用字符串赋值。

      textColor:用来更改字符串的颜色

      textAligment:用来进行水平的对齐操作。 NStextAligment是一个枚举,NStextAligmentLeft  = 0,center = 1, right = 2.

      backgroundColor: 用来显示控件的轮廓。

      font :用来管理字符串的字体和大小等特性:fontWithName: size: , systemFontOfSize:。

     numberOfLines: NSinteger  字符串显示几行。默认是1行,如果设置为0,系统自动判断。

     lineBreakMode:  NSlineBreakMode 是一个枚举类型。记住两个:NSlineBreakByWordWrapping.NSlineBreakByCharWrapping. 第一个值0, 第二个值1.

    shadowColor :阴影的颜色

   shadowOffset:阴影的偏移。后面的参数是一个NSPointer ,第一个元素代表X方向的偏移,另一个代表Y方向的偏移。