重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

UIWindow、UIView及UILabel-创新互联

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

成都创新互联主要从事成都网站设计、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务八宿,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

     苹果手机的分辨率: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方向的偏移。

 

           

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


当前题目:UIWindow、UIView及UILabel-创新互联
网站URL:http://cqcxhl.com/article/dhhdhe.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP