您的位置:首页 > 产品设计 > UI/UE

UI-父视图和子视图之间的关系

2015-08-14 18:41 501 查看
//
//  ViewController.m
//  父控件与子控件

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

/**
*  简单的介绍一些良好的编程规范
设置frame 值的时候我们可以单独的将 变量从中抽取出来
方便对每个值的单独操作 并且显得代码很干净
如果操作多个控件,可以再次基础上进行修改 十分方便
*/
CGFloat viewX = 0;
CGFloat viewY = 0;
CGFloat viewW = 100;
CGFloat viewH = 100;
/**
*  这里创建了一个button 和一个view
分别添加到其相对应的父视图上
这里讨论的一个问题是,父视图与子视图的关系
父视图的大小会不会影响子视图的大小
父视图和子视图之间还存在什么关系
*/
self.view.backgroundColor = [UIColor cyanColor];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake( viewX+50, viewY+50, viewW, viewH);
btn.backgroundColor = [UIColor orangeColor];
[btn addTarget:self action:@selector(btnTouch) forControlEvents:UIControlEventTouchUpInside];

/**
我们要搞清楚视图之间的父子关系,方便我们对视图的操作
这里做了个小实验验证 父视图和子视图之间的关系
1.将view1添加到view上
2.将btn 添加到view1上
3.分别设置背景颜色方便我们的区分
4.对按钮设置点击事件 并输出一句话 方便我们观察

*/
UIView * view1 = [[UIView  alloc]init];
view1.backgroundColor  = [UIColor redColor];
view1.frame = CGRectMake(viewX, viewY, viewW, viewH);
[view1 addSubview:btn];
[self.view addSubview:view1];
/**
*  实验结果:
俯视图的大小不会影响子视图的大小
子视图的大小不会发生变化
但是需要注意的是:
我们对按钮添加了点击事件,一般的来说,点击按钮会触发按钮的点击事件,
但是结果却和我们想的不是太一样,我们点击按钮的某一部分的时候,才会触发
按钮的点击事件,我们可以观察到,我们点击的范围是限定在父视图内,也就是说
按钮在父视图上的那一部分,点击按钮之后,会触发点击事件,而其他的范围是
不会触发按钮的点击事件
*/

// [btn addSubview:view];

}

-(void)btnTouch
{
NSLog(@"按钮被点击");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: