//
// 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
UI-父视图和子视图之间的关系
最新推荐文章于 2024-01-14 14:13:44 发布