iOS使用Object-C (不讨论swift),类似C,main函数为程序执行入口
1 #import <UIKit/UIKit.h> 2 #import "AppDelegate.h" 3 4 int main(int argc, char * argv[]) { 5 @autoreleasepool { 6 return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 7 } 8 }
在main函数里面执行 UIApplicationMain 函数,函数执行过程创建了一个UIApplication 对象(我是这样理解的,不知道实际是不是,呵呵),同时指定UIApplication的委托 AppDelegate(可以看到在 AppDelegate.h中实现了UIApplicationDelegate协议)。
默认创建的AppDelegate中又6个方法,对应Application在运行时的各种状态,可以在方法里添加处理。
1 // 程序完成启动, 初始化一些全局数据可以在这个方法里实现 2 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 3 // Override point for customization after application launch. 4 return YES; 5 }
这里是程序启动完成执行的方法,之前的xcode版本会在这里有UIWindow的创建代码,现在的xcode创建一个简单工程,默认有个Main.storyboard,关联了默认创建的viewController ,程序启动首先会执行viewController,在viewDidLoad 方法里面加载视图,
创建视图
1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // Do any additional setup after loading the view, typically from a nib. 4 5 UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)]; //创建一个视图,在iOS屏幕坐标系的(50,50)位置创建一个200x200的视图 6 aView.backgroundColor = [UIColor yellowColor]; //添加背景色,默认是没有背景的, 7 [self.view addSubview:aView]; // 将aView 添加到主视图上 8 aView.tag = 100; // 添加一个tag值,可以通过代码快速定位视图,值不能定义的太小,因为iOS系统也使用了tag标记视图,为了不与系统冲突从100开始 9 10 UIView *bView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)]; 11 [bView setBackgroundColor:[UIColor blueColor]]; 12 bView.tag = 1001; 13 [aView addSubview:bView]; 14 15 // cView在aView上方,cView太大将超出,通过设置父视图的clipBounds属性裁剪掉超出的部分,超出父视图部分不接受交互 16 UIView *cView = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 300, 100)]; 17 [cView setBackgroundColor:[UIColor greenColor]]; 18 cView.tag = 1002; 19 // [aView addSubview:cView]; 20 // [aView insertSubview:cView aboveSubview:bView];//插入到cView到bView上方 21 [aView insertSubview:cView belowSubview:bView];//插入cView到bView的下方 22 23 [aView setClipsToBounds: YES]; 24 aView.alpha = 0.5; // 父视图设置透明度,子视图也受影响 25 aView.userInteractionEnabled = NO; // 是否接受交互 26 27 UIView *serachView = [self.view viewWithTag:1001]; 28 NSLog(@"serachView = %@", serachView); 29 [serachView removeFromSuperview]; //从父视图删除
视图的基本使用,更多的使用方法,还在学习中 ...