UI学习——UIWindow ,UIView , UILable
UIWindow
window是窗口,每个app借助window将内容展示给用户.在iOS中,使用UIWindow类来表示窗口,通常一个应用程序只能创建一个UIWindow对象.
window的主要作用是呈现内容给用户,我们不会对window做太多操作.
- 如何创建window
- 指定window的大小
- 给window做一些设置
- 让window可视化并释放
- 示例代码:
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
[_window release];
- (void)dealloc
{
[_window release];
[super dealloc];
}
UIView
注:创建UIView需要alloc,不要忘记release,否则会造成内存不能释放,占用内存,浪费系统资源.在本文的截图中,有些是由于代码行数的原因,释放内存的地方没有截取到.
view(视图):代表屏幕的一个矩形区域.不同的控件代表不同种类的view
1、开辟空间并初始化视图(初始化时,给出视图位置和大⼩小)
2、对视图做一些设置(比如:背景颜 {MOD})
3、将视图添加到window上进⾏行显⽰示
4、释放视图对象
UIView *blueView = [[UIView alloc]initWithFrame:CGRectMake(120, 120, 200, 40)];
blueView.backgroundColor = [UIColor redColor];
[self.window addSubview:blueView];
[blueView release];
frame
frame是view的重要属性,是我们做视图布局的关键,它决定了视图的大小和位置。iOS提供了⽤于布局的平面坐标系。左上角为坐标系的原点。坐标系不是以像素作为划分依据,⽽而是以“点”作为依据。
水平向右:为x的正方向。屏幕最左到最右可划分320等份
垂直向下:为y的正方向。屏幕最上到最下可划分480等份
frame是一个结构体,包含2部分内容:origin和size。
origin也是一个结构体,包含2部分内容:x和y。
size同样是一个结构体,包含2部分内容:width和height。
frame的origin和size是相对于父视图来说的。
CGRectMake()函数可以帮我们快速构造一个CGRect变量。
center
center(中心点)也是view重要的属性。
center是个结构体,包含2个部分:x和y。
center与frame有着密切的联系。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.height/2;
修改center的坐标值:
blueView.center 获取_center getter方法 _center.x 访问结构体成员
blueView.center.x = 200; 严重错误
获得_center
第一种:
blueView1.center = CGPointMake(200, 200);
第二种:
CGPoint center = blueView1.center
center.x = 200
blueView1.center = center
bounds
bounds(边界)也是view的重要属性,⽤用于定义⾃己的边界。它同frame一样是⼀个CGRect结构体变量。
当一个view设置bounds时,会把自己当成⼀个容器,定义自己的边界⼤⼩以及左上角的初始坐标。当⼦视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,⽽⾮左上角.
当添加子视图时,父视图是不变的.
设置一个View的bounds:
CGRect bounds = redView.bounds
bounds.origin = CGPointMake(0, 10)
redView.bounds = bounds
view.bounds(50,50,200,200)将子视图的参照原点换为(50,50),不设置参照原点与frame一致.
frame与bounds
frame与center
center与bounds
UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下⾯。
UIView提供了其他添加视图的方法。
[self.window insertSubview:cView atIndex:1];
[self.window insertSubview:cView aboveSubview:blueView];
[self.window insertSubview:cView belowSubview:aView];
UIView除了提供添加视图的⽅方法,还提供了管理视图层次的方法。
[self.window bringSubviewToFront:yellowView];
[self.window sendSubviewToBack:yellowView];
[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
[yellowView removeFromSuperview];
[blueView removeFromSuperview];
[redView removeFromSuperview];
- 代码示例
bView.hidden = YES;
cView.alpha = 0.5;
UIView * superView = [cView superview];
NSLog(@"%@",[superView class]);
NSArray * viewArray = [self.window subviews];
NSLog(@"%@",viewArray);
cView.tag = 101;
UIView * view = [self.window viewWithTag:101];
NSLog(@"%@",view);
NSLog(@"%@",cView);
aView.hidden = YES;
cView.hidden = YES;
UILable
UILabel(标签):是显示文本的控件。在App中UILabel是出现频率最高的控件。UILabel是UIView子类,作为子类一般是为了扩充父类的功能,UILabel扩展了⽂文字显⽰示的能,UILabel是能显示⽂字的视图。
1、开辟空间并初始化(如果本类有初始化方法,使⽤用⾃⼰的;否则使⽤用⽗类的).
2、设置⽂本控制相关的属性
3、添加到父视图上,⽤用以显示
4、释放
UILabel *lable1 = [[UILabel alloc]initWithFrame:CGRectMake(60, 120, 80, 40)];
lable1.backgroundColor = [UIColor grayColor];
lable1.text=@"用户名:";
lable1.textColor = [UIColor blackColor];
[containerView addSubview:lable1];
[lable1 release];
代码示例
lable.text = @"用户名:";
lable.textAlignment = NSTextAlignmentCenter;
lable.textColor = [UIColor orangeColor];
NSLog(@"%@", [UIFont familyNames]);
lable.font = [UIFont fontWithName:@"Times New Roman" size:14.0];
lable.numberOfLines = 2;
lable.lineBreakMode = NSLineBreakByCharWrapping;
lable.shadowColor = [UIColor redColor];
lable.shadowOffset = CGSizeMake(1.0, 0.5);
UIView是所有可视化控件的基类。
UILabel是具有特定外观特定功能的视图。UILabel侧重于文本的呈现。
App靠window来呈现内容,⼀个程序一般只创建一个window。
App中能看到的元素,都是UIView及其子类。
UIView作为所有可视化控件的BaseClass,提供了许多属性和⽅方法。显⽰效果控制(
frame、alpha等)、视图添加和移除(addSubview:等)、视图层次调整(
bringSubviewToFront:等)等。
UILabel属于具体的视图,有⾃己的侧重点.
以上是自己学习UI的简单笔记,希望会有用处!!许多不足,请大家多多指导,帮助!