一个iOSApp是由各种各样的UI控件+业务逻辑和算法组成的。
那么,什么是控件呢?
屏幕上所有的UI元素都叫做控件,也有人叫做视图,组件。按钮(UIButton)、文本(UILabel)都是控件
UIView:
-UIView是所有视图(控件)的根类!
-view(视图):代表屏幕上的一个矩形区域,不同的控件代表不同种类的view。
-创建UIView:1. 开辟空间并初始化视图(初始化时,给出视图位置和大小)
2. 对视图做一些设置(比如:背景颜色)
3. 将视图添加到UIWindow上进行显示
4. 释放视图对象
//iOS中所有能看到的都是UIView或其子类
//创建一个UIView, 通过CGRect
UIView *firstView = [[UIView alloc] initWithFrame:CGRectMake(150, 120, 50, 50)];
firstView.backgroundColor = [UIColor whiteColor];
//特殊注意: 一个试图 (view) 一定依赖window才会显示
[self.window addSubview:firstView];
[firstView release];
UIView的其他属性:
-隐藏视图
-视图的透明度
-subViews属性(返回值为NSArray对象)
-superView属性
-tag值
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
view.backgroundColor = [UIColor magentaColor];
[self.window addSubview:view];
[view release];
// hidden 属性: 控制视图的显隐 为BOOL类型,默认为NO
view.hidden = YES;
// alpha属性:控制视图的透明度(范围:0 ~ 1) 默认为 1
view.alpha = 0.4;
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(100, 250, 50, 50)];
view1.backgroundColor = [UIColor greenColor];
// 将view1添加至view
[view addSubview:view1];
NSLog(@"%.2f",view1.alpha);
运行结果:1.00(view1 的alpha并没有改变只是透明度变为了view得0.4)
// subviews属性: 获得当前视图的所有子视图 返回值为NSArray对象
NSLog(@"
frame与bounds的区别:
- iOS坐标系:左上角为坐标系的原点坐标系不是以像素(px)画分的 而是以点(pt)作为依据
- frame 是相对于父视图而言,frame 决定了视图的大小和位置 包括两个结构体: origin(x,y) size (width,height)
-bounds是相对于自己本身的
以自己为容器,默认情况下:cgrect(0,0,frame.size.width,frame.size.height)
bounds的本质作用:更改当前视图自身的坐标系(坐标原点位置)
bounds.x 如果为正数,向外移动x
bounds.y 同理
bounds和frame的区别和联系:bounds相对于自身,frame相对于父视图
联系:通常bounds的size个frame的size一样
bonds黄金法则:bounds永远不改变自身的显示效果,改变的是子视图的显示