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-创新互联
网页地址:https://www.cdcxhl.com/article44/dhhdhe.html

成都网站建设公司_创新互联,为您提供建站公司微信小程序用户体验营销型网站建设企业网站制作ChatGPT

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站网页设计