您的位置:首页 > 产品设计 > UI/UE

UI:基础

2015-08-26 08:09 567 查看
App的生命周期 参考

多态的使用

//应用程序加载时候触发的方法,加载需要显示的内容
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
NSLog(@"应用程序加载 %s 方法 (应用程序加载时候触发的方法,加载需要显示的内容)所在行数 %d",__FUNCTION__,__LINE__);
//    __FUNCTION__  当前调用的方法名字
//    __LINE__     当前方法所在的行数

//    cmd + k 清除控制台输出的内容
//    cmd + shift + hh 显示所有的后台程序
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

//应用程序将要取消活跃的状态的时候要触发的方法
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"应用程序加载 %s 方法 (应用程序将要取消活跃的状态的时候要触发的方法)所在行数 %d",__FUNCTION__,__LINE__);
//应用程序将要取消活跃的状态的时候要触发的方法(例如:突然有一个电话打过来,这里面可以有一个操作,保存一下数据 )   应用程序不再处于活跃的状态
//使用该方法用来暂停正在运行的任务,然后让计时器失效,还可以让游戏暂停
}

//应用程序进入后台时候触发
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"应用程序加载 %s 方法 (应用程序进入后台时候触发)所在行数 %d",__FUNCTION__,__LINE__);
//使用该方法释放共享资源,保存用户的数据,让计时器失效,存储当前的应用程序的状态(例如:用网页浏览新闻,当推出的时候,下次再打浏览器,就会回到我们当前浏览的页面)
// 如果这个应用程序支持后台运行,这个方法将会替代 applicationWillTerminate ,这个方法就会被调用 (查阅:苹果手机 墓碑机制)
}

//应用程序将要进入前台
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"应用程序加载 %s 方法 (应用程序将要进入前台)所在行数 %d",__FUNCTION__,__LINE__);
//该方法用来唤醒重新进入后台时的任务

}

//应用程序变成活跃状态
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"应用程序加载 %s 方法 (应用程序变成活跃状态) 所在行数 %d",__FUNCTION__,__LINE__);
//应用程序变成活跃状态(当前正在使用应用程序被暂停后 又打开)打开之后
//重启当应用程序不活跃的状态时暂停时的任务,或者开启没有启动的任务。
//如果应用程序之前处于后台的状态,可以刷新一下用户的页面

}

- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"应用程序加载 %s 方法 所在行数 %d",__FUNCTION__,__LINE__);
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}


App启动的时候Appdelegate的代理方法说明

要能够会使用 :复合设计模式,就是将不同的控件组合在一个类中,然后在另一个类中可以加载这个组合在一起的组合控件,常用到登陆,注册页面的布局

UI学习

(UI控件很简单,主要是业务逻辑处理和算法要下功夫) cocaChina网站、推酷。

//didFinishLaunchingWithOptions 确实加载了

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//创建应用窗口的对象,呈现应用的内容

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];//这里加了一个autorelease

// Override point for customization after application launch. 在应用程序加载之后重写一些个性化的设置代码

//设置颜色

self.window.backgroundColor = [UIColor orangeColor];

// makeKeyAndVisible 让窗口变成程序的主窗口,并且可视

[self.window makeKeyAndVisible];//注释方法然后看UI变化,就知道这个方法了

return YES;

}



// UIView 视图类 所有在屏幕上能看到的都是他的子类或者控件

// 总结 UIView 的属性 backgroundColor 视图背景颜色

// hidden 隐藏

// alpha 透明度 取值为(0-1)默认的是 1,完全不透明

// tag 唯一的标示

// subviews 子视图 NSArray(用数组存放)

// superview 父视图 用UIview

view.hidden = YES;//隐藏中间的

view.alpha = 0.6;

view2.alpha = 0.3;

view3.alpha = 0.3;

view4.alpha = 0.3;

view5.alpha = 0.3;

//设置唯一的标示 通过 tag 可以用父视图的 viewWithTag 来找到这个被标示的视图 一般设为大于100

view.tag = 101;

UIView * aview = [self.window viewWithTag:101];

NSLog(@"%@ %@",view,aview);//打印视图信息

aview.hidden = NO;//不隐藏,就是显示

//window 的子视图

NSArray * views = [self.window subviews];

for (UIView * view in views) {

NSLog(@"%@",view);

}

//子视图

NSArray * viewArr = self.window.subviews;

NSLog(@"子视图有:%@",viewArr);

// superview 找视图的父视图

UIView * superView = view.superview;

NSLog(@"%@",superView);

/**/------注释

//创建一个绿色视图(50 50 100 50 )设置 tag 值,透明度为 0.6

UIView * greenView = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 50)];

greenView.tag = 102;

greenView.backgroundColor = [UIColor greenColor];

greenView.alpha = 0.6;

// UIView * findGreen = [self.window viewWithTag:102];//如果这里注释掉,运行后找不到此视图?????待解决

[self.window addSubview:greenView];

greenView.alpha = 0.6;

[greenView autorelease];

//Frame 相对于父视图的位置,大小。

//bounds 一个视图的边界的大小 相对于自身的坐标的位置

//获取 greenView 的 frame

NSString * frame = NSStringFromCGRect(greenView.frame);

NSLog(@"%@",frame);

NSString * point = NSStringFromCGPoint(greenView.frame.origin);

NSLog(@"%@",point);

CGFloat width = greenView.frame.size.width;

CGFloat height = greenView.frame.size.height;

NSLog(@"长度:%.f 宽度:%.f",width,height);

[greenView autorelease];

/**/

//创建新视图 newView

UIView * newView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 150, 150)];

newView.backgroundColor = [UIColor redColor];

//如果改变一个视图的位置,影响的是一个视图相对于父视图的位置和大小,是参考于父视图的坐标体系去设置视图的 坐标和大小

//改变视图的 frame (已经设置 有改变 就是相对于父视图的位置与大小

// newView.frame = CGRectMake(20, 20, 50, 50);

//bounds 边界 相对于自身的坐标的位置 (也是一个结构体)

//改变 bounds 影响他子视图的大小 和 位置

//改变 bounds (后面的宽高,相当于对视图进行缩放、改变前面的 x y 影响自身的子视图)<注意这里是重点,我觉得的的重点,多多的看几遍>

newView.bounds = CGRectMake(50, 50, 150, 150);//他不会改变相对于父亲视图的大小,只会改变(自身的坐标体系)自己的坐标原点

//newView 上添加一个子视图(注意 子视图 坐标是相对于 newview的)

UIView * vie = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];

vie.backgroundColor = [UIColor greenColor];

[newView addSubview:vie];

[self.window addSubview:newView];

//视图的属性 与视图的层级管理

//创建新视图 newView

UIView * newView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 150, 150)];

newView.backgroundColor = [UIColor redColor];

//如果改变一个视图的位置,影响的是一个视图相对于父视图的位置和大小,是参考于父视图的坐标体系去设置视图的 坐标和大小

//改变视图的 frame (已经设置 有改变 就是相对于父视图的位置与大小

// newView.frame = CGRectMake(20, 20, 50, 50);

//bounds 边界 相对于自身的坐标的位置 (也是一个结构体)

//改变 bounds 影响他子视图的大小 和 位置

//改变 bounds (后面的宽高,相当于对视图进行缩放、改变前面的 x y 影响自身的子视图)

NSLog(@"改变 bounds 之前中心点坐标:%@",NSStringFromCGPoint(newView.center));

newView.bounds = CGRectMake(50, 50, 150, 150);//他不会改变相对于父亲视图的大小(就是自身的中心点不会改变),只会改变(自身的坐标体系)自己的坐标原点,后面的两个值是管着自身的大小,就是缩放的效果

//newView 上添加一个子视图(注意 子视图 坐标是相对于 newview的)

UIView * vie = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];

vie.backgroundColor = [UIColor greenColor];

[newView addSubview:vie];

[self.window addSubview:newView];

[newView autorelease];

[vie autorelease];

//管理视图的层级关系

// [self.window bringSubviewToFront:uiView2];//uiView2 放到最上面

// [self.window sendSubviewToBack:uiView2];//uiView2 放到最下面

//对于一个视图来说,他只有一个父视图,但是他可以有多个子视图,子视图永远在父视图的上面

//对于一个子视图(subViews)中元素的位置和子视图添加的顺序一致,越晚放的视图就在数组的越后边,但是在显示的时候是先添加的最后显示,最后添加的先显示

//晚添加的视图如果和之前的视图有重叠的部分,会覆盖掉之前的(有重叠的内容)

//管理视图的层级关系,需要父视图(不管是添加视图:(addSubview) 还是管理层级(bringSubviewToFront sendSubviewToBack))

//如果需要把一个视图从父亲的视图上移走的话。需要 用子视图调用 removeFromSuperview方法即可

//如果想要交换两个视图的位置 exchangeSubviewAtIndex: withSubviewAtIndex:

[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

[uiView3 removeFromSuperview];

//插入子视图在对应的下标的位置

UIView * newV = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];

newV.backgroundColor = [UIColor redColor];

[newV autorelease];

//在创建了图层之后,我们释放了之后,还可以使用是因为在 addSubview 时候 会把他的引用计数器加1 ,self.window 以 NSArray 的形式管理子视图

//插入图层(insertSubview:newV atIndex:2 ; insertSubview:uiView2 aboveSubview:newV ; insertSubview:uiView2 belowSubview:newV)

//在 window 子图层,在下标为 2 的地方 插入一个图层 newV

[self.window insertSubview:newV atIndex:2];

//在一个确定的视图上面插入一个视图

//在视图 newV 上面插入 视图 uiView2

[self.window insertSubview:uiView2 aboveSubview:newV];

//在视图 newV 下面插入 视图 uiView2

[self.window insertSubview:uiView2 belowSubview:newV];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: