UI第一天
UIViewTsets在XCode4.0中是没有的,它是用来做一些小测试的。
/*
ios7与之前的ios版本的差别1
屏幕可用区域:
ios7:320*480,320*568
ios6: 320*460,320*548
差别就在上面的状态条,7是可以用这段空间的,7之前,这段空间不能用。
方法:
*/
//这是程序启动的入口第一个方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//第一件事儿就是实例化一个window,每一个应用都要基于一个window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor orangeColor];
/*
一个工程一般至少需要一个window,一般也只有一个,一个window是一个矩形。
UIView是所有View的祖宗,所以其他的View都继承了UIView,
UIView也是一个矩形的区域,所有的新创建的View都要加载在一个父视图(父View)上。
在这里self.window就作为整个应用的父视图存在。
self.window与UIView什么关系?
window也是UIView的一个子类,只不过是一个特殊的子类,专门用来当window的。
*/
//实例化一个UIView,一个View创建好了要立刻调用init方法设置它的位置和大小。
//使用initWithFrame:来设置一个view的位置和大小
//参数是一个<#(CGRect)#>的结构体。X、Y、宽、高
//x、y是什么,是当前view的左上角,相对于他的父视图的左上角的x和y的偏移量。
//IOS4s设备 宽:320 高:480 5/5s设备:宽:320 高:568 状态条高度 :20
//使用CGRectMake方法来设置一个rect的四个参数
CGRect view1Rect = CGRectMake(40, 40, 280, 440);
UIView *view1 = [[UIView alloc] initWithFrame:view1Rect];
//设置view的背景颜色bgcolor;
//使用[UIColor someColor]或者
view1.backgroundColor = [UIColor greenColor];
//吧做好的view1添加到父视图上
//[父视图 addSubview:子试图]
[self.window addSubview:view1];//add之后引用计数2,其中1是alloc出来的,需要手动,另一个是add出来的,不用管。
[view1 release];//添加完后立刻release。还剩下一个由父视图管理的引用计数。
CGRect view2Rect = CGRectMake(0, 20, 320, 44);
UIView *view2 = [[UIView alloc] initWithFrame:view2Rect];
view2.backgroundColor = [UIColor brownColor];
[self.window addSubview:view2];
[view2 release];
UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(0, 24, 80, 80)];
view3.backgroundColor = [UIColor redColor];
[view1 addSubview:view3];
[view3 release];
UIView *view4 = [[UIView alloc] initWithFrame:CGRectMake(200, 360, 80, 80)];
view4.backgroundColor = [UIColor grayColor];
[view1 addSubview:view4];
[view4 release];
/*********************************************************/
UIView一些常用属性
UIView *view5 = [[UIView alloc] init];
//设置frame就是x,y,宽,高
view5.frame = CGRectMake(0, 0, 320, 480);
view5.backgroundColor = [UIColor whiteColor];
[self.window addSubview:view5];
[view5 release];
UIView *afternoonView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 320, 44)];
afternoonView1.backgroundColor = [UIColor redColor];
[view5 addSubview:afternoonView1];
[afternoonView1 release];
UIView *afternoonView2 = [[UIView alloc ] initWithFrame:CGRectMake(0, 20, 320, 88)];
afternoonView2.backgroundColor = [UIColor greenColor];
[view5 addSubview:afternoonView2];
[afternoonView2 release];
透明度,他的值在0到1之间,是一个浮点型数字。
afternoonView2.alpha = 1;
UIView *afternoonView3 = [[UIView alloc ] initWithFrame:CGRectMake(0, 20, 320, 44)];
afternoonView3.backgroundColor = [UIColor blueColor];
//用半透明的2来充当3的父视图
[afternoonView2 addSubview:afternoonView3];
[afternoonView3 release];
//当父视图是半透明的时候,子试图也会变成半透明。
UIView *afternoonView4 = [[UIView alloc] initWithFrame:CGRectMake(0, 120, 320, 44)];
afternoonView4.backgroundColor = [UIColor purpleColor];
[view5 addSubview:afternoonView4];
[afternoonView4 release];
UIView *afternoonView5 =[[UIView alloc] initWithFrame:CGRectMake(10, 10, 300, 64)];
afternoonView5.backgroundColor = [UIColor cyanColor];
[afternoonView4 addSubview:afternoonView5 ];
[afternoonView5 release];
afternoonView4.clipsToBounds = YES;//出界不要,这个出界不要要设置在父视图上,影响子视图。
UIView *afternoonView6 = [[UIView alloc] initWithFrame:CGRectMake( 0, 200, 300, 44)];
afternoonView6.backgroundColor = [UIColor blackColor];
[view5 addSubview:afternoonView6];
[afternoonView6 release];
//一个View的中点属性,可以使用CGPointMake(160+40, 222-20)来设置这个中点,设置完成后,这个view就会根据重点的位置进行移动,但是不论如何变,他原来的宽和高不会变。
afternoonView6.center = CGPointMake(160+40, 222-20);
//我们想要移动一个View还可以选择下面的方法,
//view有一个属性叫frame。frame有四个值,x,y,宽,高
//改变这四个值,来移动view。甚至可以改宽高。
afternoonView6.frame = CGRectMake(0, 200, 320, 44);
//设置视图隐藏属性。
afternoonView6.hidden = NO;
//父视图与子试图的操作。得到所有子试图的数组
NSLog(@"%@",[view5 subviews]);
让一个父视图上面所有子试图中的一个放到父视图的最上层。
[view5 bringSubviewToFront:afternoonView1];
//将某个子视图一到最下层。
[view5 sendSubviewToBack:afternoonView1];
[afternoonView1 removeFromSuperview];//从父视图移除,他那个由父视图管理的引用计数这时自动减1.
[afternoonView2 removeFromSuperview];//当父视图移除是,子试图一起移除。
// afternoonView6.frame = CGRectMake(100, 200, 20, 44);
UIView *view9 = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 40, 40)];
view9.backgroundColor = [UIColor yellowColor];
[view5 addSubview: view9];
[view9 release];
view9.hidden = YES;
[view5 bringSubviewToFront:view5];
view9.hidden = NO;
[view5 sendSubviewToBack:view9];
[view10 removeFromSuperview];
[view9 removeFromSuperview];
UIView *afternoonView13 = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 44)];
afternoonView13.backgroundColor = [UIColor brownColor];
[view5 addSubview:afternoonView13];
[afternoonView13 release];
//tag是一个整形数字,我们为一个view设置一个tag后,以后我们可以在任何时候通过这个tag值,在俯视图上面找到对应的view。
afternoonView13.tag = 4000;
//通过viewWithTag可以找到后面数字对应的之前添加好了的view
UIView *tempView = (UIView*)[view5 viewWithTag:4000];
NSLog(@"%f",tempView.frame.origin.y);
frame与bounds
//frame 相对于父视图的x,y偏移量,以及子试图的宽和高
//bounds 子试图相对自己的左上角的坐标,以及子试图的宽和高。
//frame的x和y是相对父视图的,会依照实际情况有值,而bounds的x,y永远是0,0
//bounds就是我们这个子试图的边框{{0,0},{宽,高}}
//frame是位置和大小{{x便偏移,y偏移},{宽,高}}
UIView *afternoonView14 = [[UIView alloc]initWithFrame:CGRectMake(0, 70, 320, 44)];
afternoonView14.backgroundColor = [UIColor redColor];
[view5 addSubview:afternoonView14];
[afternoonView14 release];
//我要建两个view,我希望都与14重叠。
//不可行:
UIView *afternoonView15 = [[UIView alloc]initWithFrame:afternoonView14.frame];
afternoonView15.backgroundColor = [UIColor grayColor];
[afternoonView14 addSubview:afternoonView15];
[afternoonView15 release];
//可行:
UIView *afternoonView16 = [[UIView alloc] initWithFrame:afternoonView14.bounds];
afternoonView16.backgroundColor = [UIColor blueColor];
[afternoonView14 addSubview:afternoonView16];
[afternoonView16 release];
//典型案例之-----国际象棋棋盘样式
1.一次循环实现
for(int i=0;i<64;i++)
{
if(i%2==i/8%2) //判断颜色的区分
{
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(10+i%8*(300/8.0), i/8*30+((self.window.frame.size.height-240)/2), 300/8.0, 30)];
view.backgroundColor = [UIColor colorWithRed:69/255.0 green:31/255.0 blue:29/255.0 alpha:1];
[self.window addSubview:view];
[view release];
}else{
//165 129 81
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(10+i%8*(300/8.0), i/8*30+((self.window.frame.size.height-240)/2), 300/8.0, 30)];
view.backgroundColor = [UIColor colorWithRed:165/255.0 green:129/255.0 blue:81/255.0 alpha:1];
[self.window addSubview:view];
[view release];
}
}
[self.window makeKeyAndVisible];
2.二次循环实现
for(int i =0;i<8;i++)
{
for(int j = 0;j<8;j++)
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10+j*(300/8.0),i*(300/8.0)+(self.window.frame.size.height-300)/2, 300/8.0, 300/8.0)];
if((i+j)%2==0) //或者也可以写成(i%2 == j%2)
//73 31 29
view.backgroundColor = [UIColor colorWithRed:73/255.0 green:31/255.0 blue:25/255.0 alpha:1];
else
//182 101 71
view.backgroundColor = [UIColor colorWithRed:182/255.0 green:101/255.0 blue:71/255.0 alpha:1];
[self.window addSubview:view];
[view release];
}
}