UIView及其子类

 iOS app = 各种UI控件 + 各种业务逻辑和算法

window是窗口,每一个app都需要借助window将内容展示给用户看。

在iOS中,使用UIWindow类来表示窗口,通常一个应用程序只创建一个UIWindow对象。

window的主要作用是呈现内容给用户,我们不会对window做太多操作。

view(视图):代表屏幕上的一个矩形区域。iOS中用UIVIiew来表示视图

iOS中所有能看到的内容都是view或子类。


// appDelegate.m

#import "AppDelegate.h"

#import "RootViewController.h"

 

   //延展,管理私有实例变量及方法

@interface AppDelegate ()

 

@end

 

@implementation AppDelegate

 

- (void)dealloc{

   [_window release];

   [super dealloc];

}

//window是窗口,每个app都需要借助window将内容展现给用户看。在iOS中,使⽤UIWindow类来表⽰窗口,通常⼀个应⽤程序只创建⼀个UIWindow对象。window的主要作用是呈现内容给用户,我们不会对window做太多操作。

 

      //程序在这个方法开始启动

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   // 每一个应用程序都有一个主窗口

   // 创建一个窗口对象设置frame(大小)

   //1、[UIScreen mainScreen].bounds  等同于屏幕大小

   self.window = [[UIWindow alloc]initWithFrame:[UIScreenmainScreen].bounds];

   // 2、设置窗口的颜色

   self.window.backgroundColor = [UIColor yellowColor];

   //  参数在 0 到 1 之间,alpha是透明度

 self.window.backgroundColor = [UIColor colorWithRed:0 green:1 blue:1alpha:0.6];

   // 3、使窗口成为主窗口并可见。(只有主窗口要设置可见)

     //  不设置, 界面 view 显示不了

   [self.window makeKeyAndVisible];

 

 

 

   //  4、创建一个视图控制器对象,每一个控制器自带一个视图,Xcode7.0 更新后要加一个根视图控制器

   RootViewController *rootVC = [[RootViewController alloc]init];

   self.window.rootViewController = rootVC;

 

    // 模拟器的基本操作

   // Command + shift + h   回到主界面

   //  command + 数字模拟器缩放

   // command + 方向键横竖屏转换

   //  option(alt)   手指触屏缩放

 

   [rootVC release];

   [self.window release];

   return YES;

}

 

 

 

 

 

// ViewController.m


//UIView屏幕上的一块矩形区域,UIView是所有控件的父类

/*

 iPhone 4 4s 3.5寸 320 * 480;

 iPhone 5 5s 4.0寸 320 * 568;

 iPhone 6    4.7寸 375 * 667;

 iPhone 6plus 5.5寸 414 * 736;

 */

 

#import"RootViewController.h"

 

@interfaceRootViewController ()

 

@end

 

@implementationRootViewController

 

//view(视图):代表屏幕上的⼀个矩形区域。iOS中用UIView来表示视图前面ppt⾥看到的各种UI控件都属于view。不同的控件代表不同种类的view。iOS中所有能看到的内容都是view或其⼦子类。

    // 编译器自动生成,视图加载完成

 

//UILabel(标签):是显⽰⽂本的控件。在App中UILabel是出现频率最高的控件。UILabel是UIView⼦类,作为⼦类⼀般是为了扩充⽗类的功能,UILabel扩展了⽂字显⽰的功能,UILabel是能显示文字的视图。

-(void)viewDidLoad {

    [super viewDidLoad];

           // 一、

     // 每个控制器自带一个视图(屏幕等大)。

    //上层的视图会覆盖下层的视图,视图开始默认透明

    //给视图控制器及其自带视图设置背景颜色

    self.view.backgroundColor = [UIColorwhiteColor];

 

    // 展示一个视图的步骤

    // 1、创建视图对象,

    // 2、设置对象的一系列属性

    // 3、添加到父视图上。

 

    //self.view.hidden = YES;   // 父视图隐藏后子视图也会隐藏

 

     //UIView的层级关系

     //1.任何一个view可以有很多的子视图,但是只能有一个父视图

     //2.父视图对子视图拥有所有权,在添加子视图的时候,子视图的引用计数 +1

     //3.父视图和子视图只是一个相对的概念

     //4.子视图的位置是以父视图的坐标原点来计算的

 

 

 

      // frame 和 center 都是相对于父视图的原点进行设置,只不过frame是设置子视图的原点,而center设置子视图的中点,而 bounds 设置子视图的位置,本身不发生改变,设置左上角的坐标,改变后,子视图会根据设置后的原点坐标进行改变位置。

     // frame是相对于父视图的原点,以父视图的原点为原点

    // 创建视图对象

    UIView *greenView = [[UIViewalloc]initWithFrame:CGRectMake(50, 50, 150, 50)];

    // 设置背景颜色

    greenView.backgroundColor = [UIColorgreenColor];

      //添加到父视图

    [self.view addSubview:greenView];

 

     // 若父视图一样,设置位置有重叠,后面的代码的视图会覆盖前面的代码的视图

    UIView *yellowView = [[UIViewalloc]initWithFrame:CGRectMake(50, 120, 150, 60)];

    yellowView.backgroundColor = [UIColoryellowColor];

    [self.view addSubview:yellowView];

 

 

    UIView *blueView = [[UIViewalloc]initWithFrame:CGRectMake(100, 0, 100, 100)];

    blueView.backgroundColor = [UIColorblueColor];

    // 重新设置视图大小

    blueView.frame = CGRectMake(180, 0, 60,60);

    [greenView addSubview:blueView];

 

    // 通过center(中心点)改变视图的位置

    // center 也是相对于父视图而言     (以父视图原点为原点)

    blueView.center = CGPointMake(0, 0);   // 设置中点为父视图greenView的原点

    blueView.backgroundColor = [[UIColorblueColor]colorWithAlphaComponent:0.3];

    // bounds:默认 origin(原点(0,0);

    // 可以通过bounds 修改子视图的位置以及当前视图的大小

    // bounds 是相对于自身而言

    // bounds的 X 和 Y 为正,子视图往左上角跑,否则往右上角

    UIView *redView = [[UIViewalloc]initWithFrame:CGRectMake(10, 10, 40, 40)];

    redView.backgroundColor = [UIColorredColor];

    [blueView addSubview:redView];

   NSLog(@"%f,%f",blueView.bounds.origin.x,blueView.bounds.origin.y);

    blueView.bounds = CGRectMake(0, 0, 100,100);

 

    // 把 blueView 自身视图的左上角设置为(10,10) 原点向左上角移动,子视图(redView)添加进来时,会以更改后的原点为原点设置位置。

//    blueView.bounds = CGRectMake(10, 10, 100,100);

 

    // 结构体快速构造

    // CGRect rect = CGRectMake();

    // CGSize size = CGSizeMake();

    // CGPoint origin = CGPointMake();

 

 

//    // 二、视图的层次

//    UIView *greenV = [[UIViewalloc]initWithFrame:CGRectMake(100, 100, 200, 100)];

//    UIView *redV = [[UIViewalloc]initWithFrame:CGRectMake(120, 120, 100, 100)];

//    UIView *brownV = [[UIViewalloc]initWithFrame:CGRectMake(140, 140, 100, 100)];

//   

//    greenV.backgroundColor = [UIColorgreenColor];

//    redV.backgroundColor = [UIColor redColor];

//    brownV.backgroundColor = [UIColorbrownColor];

//   

//     //添加视图

//    [self.view addSubview:greenV];

//    [self.view addSubview:redV];

//    // 父视图相当于一个容器(数组),加入的子视图引用计数增加,最先进去的视图数组下标为0.

//    [self.view insertSubview:brownV atIndex:0];

//    [self.view insertSubview:brownVaboveSubview:redV];

//    [self.view insertSubview:brownVbelowSubview:greenV];

//   

////    // 删除一个视图从父视图上。

////    [brownV removeFromSuperview];

//   

//    // 2、改变视图层次

//    [self.view exchangeSubviewAtIndex:0withSubviewAtIndex:2];

//    [self.view sendSubviewToBack:brownV];

//    [self.view bringSubviewToFront:brownV];

//   

//    [greenV release];

//    [redV release];

//    [brownV release];

 

    // 3、 UIView的属性

 

//    UIView *view = [[UIViewalloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

//   // view.backgroundColor = [UIColororangeColor];

//     [self.view addSubview:view];

//      view.backgroundColor = [[UIColororangeColor] colorWithAlphaComponent:0.1];  //能够使父视图隐藏而子视图不隐藏

    // 视图的显隐(默认是NO)

//    view.hidden = YES;

    // 视图的tag值

   // view.tag = 100;

 

    // 根据tag值寻找视图

//    UIView *v = [self.view viewWithTag:100];

//    NSLog(@"%@",v);

 

//    // 寻找父视图

//    UIView *supView = [view superview];

//    NSLog(@"%@",supView);

 

//    // 子视图

//    NSArray *arr = [view subviews];

//    NSLog(@"%ld",arr.count);

 

    // 视图透明度(改变父视图的透明度,子视图的透明度会跟着改变)

    //view.alpha = 0.1;

 

 

 

//    UIView *subView = [[UIViewalloc]initWithFrame:CGRectMake(30, 30, 100, 100)];

//    subView.backgroundColor = [UIColorredColor];

//    [view addSubview:subView];

//

//    [subView release];

//    [view release];

 

 

      // UILabel:继承于UIView,侧重于文本的显示

    UILabel *label = [[UILabelalloc]initWithFrame:CGRectMake(50, 100, 200, 200)];

 

    // 设置背景颜色

    label.backgroundColor = [UIColoryellowColor];

 

    // 设置文本

    label.text = @"大人明天不上班,大保健来不来";

 

 

    //设置文本颜色

    label.textColor = [UIColor redColor];

 

    // 设置行数,默认 1 行

    // 如果设置为 0 ,默认 N 行,N 由 label 的高度决定

    label.numberOfLines = 0;

 

    //设置换行模式

    label.lineBreakMode =NSLineBreakByTruncatingMiddle;

 

    //设置字体,默认是17号字体

//    label.font =[UIFont systemFontOfSize:30];

    label.font = [UIFont systemFontOfSize:20weight:30];

 

//    // 获取系统的字体

//    NSArray *arr = [UIFont familyNames];

//    for (NSString *s in arr) {

//        NSLog(@"%@",s);

//    }

 

       // 设置对齐方式

    label.textAlignment = NSTextAlignmentRight;

 

    // 设置阴影以及颜色(文字)

    label.shadowOffset = CGSizeMake(5, 5);

    label.shadowColor = [UIColor blueColor];

 

 

     // 设置 label 的圆角

    label.layer.cornerRadius = 100;   //设置边角半径

    label.layer.borderColor = [UIColorgreenColor].CGColor;

    label.layer.borderWidth = 2;

//     // 超出部分边缘裁剪(指超出边框)

//    label.clipsToBounds = YES;

//    // layer的裁剪

//    label.layer.masksToBounds = YES;

 

      // 添加到父视图

    [self.view addSubview:label];

 

    [label release];

 

 

}

 

-(void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    }

 

 

@end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值