UI_UIView、UILabel、UIWindow

  • UIWindow
  • UIView
  • UILabel


UI(User Interface):用户界面,能看到的各种各样的页面元素。iOS App = 各种各样的UI控件 + 业务逻辑和算法

 UIWindow :

  • 作为应用程序的窗口,在应用程序启动的时候就要加载,各个UI界面都是 借助window来呈现的
  • NSObject -> UI系 -> UIResponder -> UIView -> UIWindow
    • 在iOS中,使用UIWindow类来表示窗口,主要负责管理和协调各个视图在设备屏幕上的展现
    • 通常一个应用程序只创建一个UIWindow对象。
    •  我们不会对其操作太多,其尺寸要与屏幕大小一致

创建Window

//通常Window的大小(frame)与屏幕(UIScreen)大小一致
1 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]];

2 //让window变的可视,即显示window
3 [self.window makeKeyAndVisible]; 

 

UIView:

NSObject -> UI系 -> UIResponder(响应者类) -> UIView

UIView简介:

  • iOS 中能看到的内容都是view或其子类。
  • 负责渲染矩形区域的内容,相应区域中德触摸事件,以及为矩形区域添加动画
  • 管理一个或者多个子试图

 

创建视图View:

  1. 开辟空间并初始化视图(初始化时,绘出视图位置和大小)
  2. 对视图做一些设置(比如:背景颜色)
  3. 将视图添加到window上进行显示
  4. 释放视图对象
1 //创建视图
2 UIView *blueView = [[UIView alloc] initWithFrame:CGRectMake(100, 10, 2, 10)];
3 blueView.backgroundColor = [UIColor buleColor];
4 [self.window addSubView:blueView];//addSubView自动引用计数加1
5 [blueView release];

View的属性:对于属性使用点语法和使用set赋值等价

  • userInteractionEnabled:是否可以相应点击 
    • 子视图超出父视图的部分,不会有用户交互,可以设置clipsToBounds为YES改变
  • autoresizingMask:如何调整自己的大小当superView的bounds发生变化时。
  • autoresizesSubviews:是否自动调整subviews的大小,缺省值为YES。 
  • Frame: 指视图的坐标和大小视图布局的关键,决定视图的大小和位置。NSStringFromCGRect(View.frame)
  • Center:中心点,和frame关系密切,是frame的中心坐标
  • Bounds:边界属性,用于定义视图相对于本地坐标系的位置和大小。是CGRect结构体变量 NSStringFromCGRect(View.bounds)
  • hidden:默认no
  • alpha:可以改变的透明度float (0.0-1.0),父视图改变会影响到子视图
iOS坐标系:左上角是原点。水平向右:为x的正方向。垂直向下:为y的正方向。
坐标系以“点”作为划分依据。
FrameFrame:一个结构体,包括origin和size,(origin和size是相对于父视图来说的),是CGRect结构体变量
origin:结构体,包括两个部分:x和y
size:结构体,包括两个部分:width和height
CGRectMake() 函数可以帮我们快速构造一个CGRect变量。
CenterCenter: 中心点,和frame关系密切
center:   一个结构体,包括 x 和 y。

center.x = frame.origin.x + frame.size.width/2;

center.y = frame.origin.y + frame.size.height/2;

BoundsBounds:          边界,用于定义自己的边界。是CGRect结构体变量
bounds设置:   当一个view设置bounds时,会把自己当成一个容器,

定义自己的边界大小以及左上角的初始坐标。

Bounds/Frame/Center联系

   参考系
 Bounds(Origin:到自身原点的距离, Size:自身的宽高)  自身
 Frame(Origin:到父视图原点的距离, Size:自身的宽高)  父视图
 Center  父视图

frame & bounds:bounds.size改变时,frame.size也会发生变化;

frame.size发生变化时,bounds.size也发生改变。

frame & center: frame.origin发生变化,center也会发生变化;

center发生变化时,frame.origin也会发生变化。

  • center.x = frame.origin.x + frame.size.width/2;
  • center.y = frame.origin.y + frame.size.height/2;
  • center & bounds:互不影响。

其他属性

 属性名 描述  示例 
hidden  控制视图的显隐   redView.hidden = YES(NO);//隐藏(显示)
 alpha  控制视图的不透明度(子视图也一起透明),取值范围0~1  redView.alpha = 0.8
 subviews  获取本视图的所有子视图,有0或多个  NSArray *subViews = [redView subViews];
 superview  获取本视图的父视图,只有一个  UIView *superView = [redView superView];
 tag  给视图添加标记,被加完标记的视图可以使用viewWithTag:方法取出

redView.tag = 100;

UIView *view = [superview viewWithTag:100];

重要方法

  1. 初始化视图
    • initWithFrame:(CGRect)frame
  2. 添加视图
    • addSubview:[添加视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。] 
  3. 插入视图
    • insertSubview:atIndex:[在指定的index处插入子视图。]
      • [superview insertSubview:grayView atIndex:1];
    • insertSubview:aboveSubview:[在指定的视图上面添加子视图]
      • [superview insertSubview:grayView aboveSubview:redView];
    • insertSubview:belowSubview:[在指定视图下面添加子视图。]
      • [superview insertSubview:grayView belowSubview:redView]; 
  4. 整理视图
    • bringSubviewToFront:[把指定的子视图移动到最前面]
      • [superview bringSubviewToFront:redView];
    • sendSubviewToBack:[把指定的子视图移动到最后面]
      • [superview sendSubviewToBack:redView];
    • exchangeSubviewAtIndex:withSubviewAtIndex:[交换两个指定索引位置的子视图]
      • [superview exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
  5. 移除视图 
    • removeFromSubview[把receiver从父视图上移除] 
      • [redView removeFromSuperview];
      • superView.clipsToBounds = YES;//将超出父视图部分的子视图去掉  

UILabel:

NSObject -> UI系 -> UIResponder -> UIView -> UILabel
UILabel(标签):是显示文本的控件。(在App中出现频率最高)

 

功能:Label是UIView子类,UILabel扩展了文字显示的功能,UILabel是能显示文字的视图。

Label的使用:
创建UILabel:

      1. 开辟空间并初始化(如果本类有初始化方法,使用自己的;否则使用父类的)。
      2. 设置文本控制相关的属性。
      3. 添加到父视图上,用以显示。
      4. 释放 
      • 1 {
        2 UILabel *userNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0,1,3)];
        3 userNameLabel.text = @"用户名";
        4 [containerView addSubview:userNameLabel];
        5 [userNameLabel release];
        6 }
控制文本显示:
 属性名 描述  示例 
text  显示的文本内容  label.text = @"用户名"; 
 textColor  文本内容的颜色  label.textColor = [UIColor redColor];
textAlignment  文本的对齐方式(水平方向)  label.textAlignment = NSTextAlignmentLeft; 
 font 文本字体  label.font = [UIFont fontWithName:@"Heletica-Bold"size:20];//黑体加粗20号字 
 numberOfLines 行数   label.numberOfLines = 3;//显示3行,注意label的高度要能容纳3行。如果3行没能显示完信息,没显示的信息以省略号代替。设置为0 不限行数
lineBreakMode  断行模式  label.lineBreakMode = NSLineBreakByWordWrapping;//以单词为单位换行。 
 shadowColor 阴影颜色  label.shadowColor = [UIColor yellowColor];//阴影颜色 
 shadowOffset  阴影大小 label.shadowOffset = CGSizeMake(2, 1);//阴影向x正方向偏移2,向y正方向偏移1 
 1 {
 2 //    1.创建并设置位置和大小
 3     UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, [UIScreen mainScreen].bounds.size.width - 100, 35)];
 4     
 5 //    2.设置lable的相关属性
 6 //    lable.backgroundColor = [UIColor whiteColor];
 7     lable.tag = 101;
 8     lable.text = @"匆匆那年";                               //  设置lable文字
 9     lable.textColor = [UIColor whiteColor];                 //  设置文本颜色
10     lable.textAlignment = NSTextAlignmentCenter;           //  文本位置居中
11     lable.font = [UIFont boldSystemFontOfSize:30];         //  加粗,设置字号
12     lable.numberOfLines = 0;                               //  通常设置为0自动换行
13     lable.adjustsFontSizeToFitWidth = YES;                 //  文字自适应
14 //    lable.shadowColor = [UIColor colorWithRed:.0 green:.2 blue:.2 alpha:0.2];
15     lable.shadowOffset = CGSizeMake(3.0, 3.0);            //   设置投影颜色和高度
16 
17 //    3.添加
18     [self.window addSubview:lable];
19     
20 //    4.release一次
21     [lable release];
22 
23 }
Label

 

 

 

 

 

 

 

 

 

 

posted @ 2015-04-08 00:10  captivity  阅读(146)  评论(0)    收藏  举报