iOS开发面向的是点坐标系,不是像素
Info.plist常见的设置
pch文件:
pch文件的创建:
#ifdef DEBUG (调试模式)
#define Log(...) NSLog(__VA_ARGS__) (“...”表示自定义)
#else
#define Log(...) /**/
#endif
程序的运行过程
iOS程序的完整生命周期:当用户点击图标的时候,会通过main函数开始程序(既项目中的main.m文件中的UIApplicationMain方法),这时会创建一个UIApplication的实例(单例),UIApplication象征着整个程序,然后会创建一个UIApplication的代理对象delegate,在开启一个消息循环来监听系统事件,如果监听到某一个动作就会给代理发送消息。
UIApplication:
1.简介
1>整个应用程序的象征,一个应用程序就一个UIApplication对象,使用了单例设计模式
2> 通过[UIApplication sharedApplication]访问这个单例对象
2.常见用法
1>设置图标右上角的红色提示数字
app.applicationIconBadgeNumber = 10;
2>设置状态栏的样式
app.statusBarStyle = UIStatusBarStyleBlackOpaque;
3>控制状态栏的显示和隐藏
app.statusBarHidden = YES;
4>显示状态栏上面的圈圈
app.networkActivityIndicatorVisible = YES;
5>打开外部资源
• 打开网页
[app openURL:[NSURL URLWithString:@“http://www.baidu.com”]];
• 打电话
[app openURL:[NSURL URLWithString:@“tel://10086”]];
• 发短信
[app openURL:[NSURL URLWithString:@“sms://10086”]];
6> 代理属性(当应用程序发生了一些系统级别的事件,就会通知代理,交给代理去处理)
@property(nonatomic,assign) id delegate;
UIApplicationDelegate的代理方法
// 程序加载完毕(启动完毕)就会调用一次
• (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
// 应用程序失去焦点的时候调用(一个app如果失去焦点,就不能跟用户进行交互)
• (void)applicationWillResignActive:(UIApplication *)application
// 程序进入后台就会调用
• (void)applicationDidEnterBackground:(UIApplication *)application
// 程序即将进入前台的时候调用
• (void)applicationWillEnterForeground:(UIApplication *)application
// 应用程序获得焦点的时候调用(一个app只有获得焦点之后才能跟用户进行交互)
• (void)applicationDidBecomeActive:(UIApplication *)application
// 程序即将被关闭的时候可能会被调用
• (void)applicationWillTerminate:(UIApplication *)application
// 程序接收到内存警告都会调用
• (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
/*************************************************************************************************************************/
UIViewController是iOS顶层视图的载体及控制器,用户与程序界面的交互都是由UIViewController来控制的,UIViewController管理UIView的生命周期及资源的加载与释放。
UIView与UIWindow共同展示了应用程序的用户界面。可以将UIView理解成画布,UIWindow理解成画框。这两个类的继承关系是这样的:NSObject — UIResponder — UIView — UIWindow
iOS中,所有显示在界面上的对象都是从UIResponder直接或间接继承的,UIView和UIWindow也不例外。
UIWindow
虽然UIWindow继承自UIView,但是在模型中,它是一个首席View。UIWindow的主要作用是提供一个区域来显示UIView,然后将事件分发给UIView。一般情况下,应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件。
1. 创建一个全屏的window:
// [[UIScreen mainScreen] bounds]]获取主屏幕的大小
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
2. 给window设置背景色:
self.window.backgroundColor = [UIColor whiteColor];
3. 指定根控制器
MyFirstViewController *myVC = [[MyFirstViewController alloc] init];
self.window.rootViewController = myVC;
4. 将window设置为KeyWindow并显示:
[self.window makeKeyAndVisible];
我们看看这个每个程序都有的方法吧:
[self.window makeKeyAndVisible];
由于iPhone是单窗口程序,所以也就只有这么一个Window对象,而且是UIWindow,不是NSWindow。而根据文档上所说:
“这个是便捷方法,去使被使用对象的主窗口显示到屏幕的最前端。你也可以使用hiddenUIView方法隐藏这个窗口”
在iOS7中,状态栏默认情况下归控制器管理,比如状态栏的样式、状态栏的是否可见
改变状态栏的颜色为白色样式
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
// 隐藏状态栏
- (BOOL)prefersStatusBarHidden
{
return YES;
}