iOS开发——视图及视图控制器

// 自定义初始化方法,通过加载可视化界面开发xib文件来加载控制器自定义界面。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

// 视图控制器视图加载完成(并未显示出来)
// 视图控制器的入口方法
// 自定义界面初始化,基本用户数据加载,网络请求等。
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self initializeAppearance];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图将要显示
- (void)viewWillAppear:(BOOL)animated {
    
    [super viewWillAppear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图显示完成
- (void)viewDidAppear:(BOOL)animated {
    
    [super viewDidAppear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图将要隐藏
- (void)viewWillDisappear:(BOOL)animated {
    
    [super viewWillDisappear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图隐藏完成
- (void)viewDidDisappear:(BOOL)animated {
    
    [super viewDidDisappear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)initializeAppearance {
    
    // 配置视图控制器视图背景色,默认透明色,界面推送时透明色会产生残影效果。
    self.view.backgroundColor = [UIColor whiteColor];
    
    /* UIView初始化及属性 */
    UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(60, 184, 200, 200)];
    // 配置视图背景色
    blackView.backgroundColor = [UIColor blackColor];
    // 配置视图的透明度,0-1,1表示不透明,0表示透明,当透明度为0时视图默认被隐藏。
    blackView.alpha = 1.0;
    // 配置视图是否被隐藏,默认为NO
    blackView.hidden = NO;
    // 配置视图标签,标签值唯一,标签值大于10且为整形。
    blackView.tag = 10;
    [self.view addSubview:blackView];
    [blackView release];
    
    // frame:决定了视图"在父视图坐标系中"的大小和左上角点的位置;
    // NSLog(@"frame = %@", NSStringFromCGRect(blackView.frame));
    // bounds:决定了视图"在自身坐标系中"的大小和左上角点的位置;
    // NSLog(@"bounds = %@", NSStringFromCGRect(blackView.bounds));
    // center:决定了视图"在父视图坐标系中"的中心点位置。
    // NSLog(@"center = %@", NSStringFromCGPoint(blackView.center));
    
    // subviews:视图所管理的所有子视图集合,视图后添加的在集合的末尾;
    // NSLog(@"view subviews = %@", self.view.subviews);
    // superview:管理当前视图的父视图。
    // NSLog(@"blackview superview = %@", blackView.superview);
    
    /* 视图层级 */
    UIView *grayView = [[UIView alloc] initWithFrame:CGRectMake(90, 214, 200, 200)];
    grayView.backgroundColor = [UIColor grayColor];
    grayView.tag = 11;
    // [self.window addSubview:grayView];
    // [grayView release];
    
    // 视图调整方法
    // [self.window sendSubviewToBack:grayView];
    // [self.window bringSubviewToFront:blackView];
    // [self.window exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
    
    // 视图插入方法
    [self.view insertSubview:grayView belowSubview:blackView];
    [grayView release];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.bounds = CGRectMake(0, 0, 100, 30);
    button.center = CGPointMake(160, 450);
    [button setTitle:@"确定"
            forState:UIControlStateNormal];
    [button addTarget:self
               action:@selector(buttonPressed:)
     forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void)buttonPressed:(UIButton *)sender {
    
    /*
    // 通过tag值视图
    UIView *blackView = [self.view viewWithTag:10];
    UIView *grayView = [self.view viewWithTag:11];
    NSLog(@"black view = %@", blackView);
    NSLog(@"gray view = %@", grayView);
    
    // 视图移除,父视图负责release子视图一次,视图被释放销毁,内存回收
    [blackView removeFromSuperview];
    [grayView removeFromSuperview];
     */
    
    /* 视图控制器页面推送:模态视图控制器推送 */
    // 1.创建视图控制器
    DetailViewController *detailVC = [[DetailViewController alloc] init];
    // 2.新控制器推送显示
    // 当前控制器会持有被显示的控制器,retainCount + 1
    [self presentViewController:detailVC animated:YES completion:^{
        // NSLog(@"detail view controller show!");
    }];
    // 3.新控制器内存管理释放
    [detailVC release];
}

// 接收到内存警告时调用
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值