一、屏幕各部分尺寸
1、状态栏高度20
2、导航条高度44
3、屏幕宽度320
4、iphone4之前屏幕高度480
5、iphone5之后屏幕高度568
二、UI窗口程序解释
UIWindow是UIView的一个子类,作用就是给一个IOS应用提供一个窗口,所以它是一种特殊的UIView
今天self.window就是我们的窗口,也将作为我们的所有视图的父视图
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
1、确定屏幕上的某一个点,这是一个结构体,里面储存了一个点的坐标(x,y)
CGPoint point = CGPointMake(0, 0);
2、确定一个矩形的大小,这是一个结构体,里面储存了一个矩形的宽高(width,height)
CGSize size = CGSizeMake(100, 100);
3、做一个rect,这是一个结构体,里面存了一个view的左上角坐标和宽高
CGRect rect = CGRectMake(0, 0, 100, 100);
4、第一个UI视图UIView
UIView *firstView = [[UIView alloc] initWithFrame:rect];//用一个CGRect矩形来初始化一个UIView的对象,这样就明确了这个UIView对象的位置和尺寸
5、把一个view添加到他的父视图上
[self.window addSubview:firstView];//用父视图调用方法,参数是要添加的子视图,当把一个子视图添加到父视图的时候,这个子视图的引用计数会自动+1
[firstView release];//一般,把一个子视图添加到父视图后,立刻对子视图执行release-1操作,这样这个子视图的手动引用计数就变成0了,子视图还剩下一个父视图中的自动的引用计数1
6、UIView的属性们
6.1、背景颜色
firstView.backgroundColor = [UIColor redColor];//使用[UIColor someColor]的方法来设置一个颜色
6.2、透明度
firstView.alpha = 0.5;//透明度在0-1之间,1为完全不透明,0为完全透明(隐藏),数越大越不透明
注意:如果父视图是半透明的,那么父视图上的子视图也是半透明的,透明度和父视图一样
6.3、中心点
firstView.center = CGPointMake(160, 284);
//center属性是设置子视图相对于父视图的中点位置
6.4、隐藏属性
firstView.hidden = NO;//yes为隐藏,no为显示
6.5、边界截取
UIView *secondView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 150, 150)];
secondView.backgroundColor = [UIColor greenColor];
[firstView addSubview:secondView];
[secondView release];
注意:父视图来调用这个属性,它上面的子视图被影响
firstView.clipsToBounds = YES;//yes不超,no超
6.6、bounds和frame
NSLog(@"%f,%f,%f,%f",firstView.frame.origin.x,firstView.frame.origin.y,firstView.frame.size.width,firstView.frame.size.height);
NSLog(@"%f,%f,%f,%f",firstView.bounds.origin.x,firstView.bounds.origin.y,firstView.bounds.size.width,firstView.bounds.size.height);
无论frame还是bounds都是一个矩形结构体,都有x、y、宽、高四个值,而且同样一个视图不论是frame还是bounds宽和高都一样
差别:bounds没有相对位置,指的就是自己这个框,所以是0,0的x,y
frame是相对于父视图的,所以x,y表示了这个视图左上角相对于父视图左上角的偏移量
注意:bounds的x,y永远是0
6.7、tag,表示一个view的编号
firstView.tag = 4000;//为第一个view的tag赋值为4000
secondView.tag = 4001;//为第二个view的tag赋值为4001
6.8、通过tag找到特定的视图,该视图是什么类的,就用什么类来接收
UIView *tempFirstView = [self.window viewWithTag:4000];//用父视图来调用,参数是一个tag值,返回值就是这个tag值所对应的那个视图
NSLog(@"%f,%f",tempFirstView.alpha,tempFirstView.frame.size.width);
//请找到secondView,通过tag值
注意:同一个类中,tag值不能重复
6.9、找到一个父视图上面的所有子视图
UIView *thirdView = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 320, 44)];
thirdView.backgroundColor = [UIColor orangeColor];
[self.window addSubview:thirdView];
[thirdView release];
NSArray *windowSubViewArr = [self.window subviews];//用父视图调用subviews方法,可以得到这个父视图上的所有子视图,存成一个数组
NSLog(@"%@",windowSubViewArr);
//遍历子视图
for(id tempView in windowSubViewArr)
{
if(((UIView*)tempView).tag == 4000)//如果循环中找到的视图的tag等于4000
{
((UIView*)tempView).backgroundColor = [UIColor blueColor];//把tag等于4000的视图改成蓝色
}
}
6.10、切换一个父视图上子视图的层次
UIView *fourthView = [[UIView alloc] initWithFrame:CGRectMake(50, 64, 220, 350)];
fourthView.backgroundColor = [UIColor grayColor];
[self.window addSubview:fourthView];
[fourthView release];
6.10.1、把下面层次的view挪到上面来
[self.window bringSubviewToFront:firstView];//把被fourth盖住的firstView挪到前面来
6.10.2、把上面的view挪到下面去
[self.window sendSubviewToBack:firstView];//把前面的first挪到后面去
6.11、把子视图从父视图移除,该子视图的引用计数会自动-1
[fourthView removeFromSuperview];
6.12、另外一种颜色
//203 35 117
self.window.backgroundColor = [UIColor colorWithRed:203/255.0 green:35/255.0 blue:117/255.0 alpha:1];//前三个参数都是小于1的浮点型,要用我们获得的RGB颜色值与255.0进行相除
[self.window makeKeyAndVisible];//显示window上的内容,永远也不要在这行下面写关于UI的内容,因为下面写的UI都无法被看到
return YES;
}
三、棋盘格式输出语句
for(int i =0 ;i<64;i++)
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i%8*40, 50+i/8*40, 40, 40)];//x是初始值+每次的变化,y也是初始值+每次的变化,x每过4次变回初始值,y每过四次加一次高度
view.backgroundColor = [UIColor brownColor];
[self.window addSubview:view];
view.tag = 4000+i;
[view release];
if((i%8+i/8)%2 == 0)//一个格子的x和y的和是奇数还是偶数
{
view.backgroundColor = [UIColor whiteColor];
}
}
//循环写的布局,x:i%一行视图个数*(每两个视图的间隔),y:i/一行的个数*(每两个视图的间隔)
四、每行是随机颜色语句
for(int i =0;i<480;i++)
{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, i, 320, 1)];
view.backgroundColor = [UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1];
[self.window addSubview:view];
[view release];
}