iOS 开发~UIWindow

比如下面例子:

写出第一个iOS的程序,在界面上显示“Hello World”

1.如何新建一个工程

iOS—>Single View Application—>工程名、保存位置

2.运行App

点击三角符号或使用快捷键(Command + R)

快捷键:Command+B 只是编译,不是运行

3.工程的文件组成

4.应用程序是如何运行起来的?

1)main方法

int main(int argc, char * argv[])

{

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}

UIApplicationMain()全局函数,一共做了三件事:

a)根据第三个参数创建应用程序类的实例(nil默认UIApplication 系统默认)

b)根据第四个参数创建应用程序代理类的实例

      (Application Delegate代理     自己任意创建的类,遵守了协议才可以成为代理类)

c)启动事件循环

d)在代理类的didFinishLaunchingWithOptions:方法中编写启动程序后的界面创建及显示

5.UIWindow

          1)是什么

              是界面显示的根本对象,要想出现显示的内容,那么一定是先创建window的实例

          2)作用是什么?

             是界面要显示的内容的父容器,在window的上面添加其他显示的内容

6.frame

        1)是什么

              是CGRect类型的结构体

        2)描述了控件在父容器中的位置和大小

CGRect{

CGPoint  origin,

CGSize     size

}

CGPoint{

CGFloat  x,

CGFloat y

}

CGSize{

CGFloat width,

CGFloat height

}

      3)如何创建结构体的变量?

           使用全局函数  xxxMake();

           CGRect  —>  CGRectMake(x,y,width,height)

           CGPoint -> CGPointMake(x,y);

           CGSize  -> CGSizeMake(width,height); 

例:

AppDelegate.m

#import "AppDelegate.h"

@implementation AppDelegate 

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

{

    //应用程序启动后,第一个要执行动作的时机点,可以做第一个要出现的界面的设置

    //1.创建window的实例   //读屏幕的大小    

   self.window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

   //2.设置window的背景色

   self.window.backgroundColor=[UIColor yellowColor];

    //3.创建并添加显示文本信息的标签

     UILabel *label = [[UILabel alloc]init];

    label.frame = CGRectMake(100, 150, 200, 40);

    label.text = @"Hello World";

    [self.window addSubview:label];//子试图添加到界面

   // 4 设置根控制器  

   self.window.rootViewController=[ViewController new];                                                                                                 

    // 5.设置窗口可见(显示)

    [self.window makeKeyAndVisible];

    return YES;

}

效果如下: 

原文地址:https://www.cnblogs.com/yhj1787354782/p/5050205.html