1。 xcode左边的目录中,文件夹为黄色,说明在物理目录上不存在,只是一个显示使用。
2. ios设置只能有一个window。 UIWindow是一个用来容纳UIVIew的容器。一个生命周期,就只有一个UIWindow。
3. UIWindow有3个级别,UIWindowLevelAlert > UIWindowLevelStatusBar > UIWindowLevelNormal.
4. 可以用NSLog(@"self.window frame : %@", NSStringFromCGRect(self.window.frame)); 来打印一个frame,因为frame是一个结构体不能直接用%@来打印。
5.frame是其父坐标为起点。bounds是IOS的原点坐标为起点。
6. 如果希望让一个视图裁剪其子视图,需要将其clipsToBounds属性设置为YES.
7.view的alpha和hidden都会挟持子视图。
8. 可以用系统提供的方法来进行仿射变换,CGAffineTransformScale,CGAffineTransformRotate,CGAffineTransformTranslate. 实现UIView的变换。
9. contentMode 不同的模式,UIView的显示就会不一样。不知道UIView的大小的时候需要选择合理的。有fit,fill,buttom,top等。一张图片显示在UIView中的模式。
10。 UITabBarController是标签栏控制器。
11。用nib创建viewController的方法,如果定义一个名字与viewController一样的xib,就可以直接用[[RootViewController alloc] init]; 创建。
12.调用self.view的时候,如果view没有创建,则会调用loadView方法来创建一个View。
13.在创建视图控制器时,不要在初始化方法中做视图相关的动作。
14. 在ios6以前,内存警告的时候会调用ViewDidLoad,需要将loadView中所有的视图都清空。 ios6.0以后调用didReceiveMemoryWarning方法。
15.判断当前的view是否在当前窗口上, self.view.window是否为空,如果为nil则说明不在当前窗口上。
16。[presentViewController:modalVC animated:YES completion:^{ NSLog("Call Back") }]; 这个Block在执行完viewDidAppear后就会调用completion的block。
17. modalTransitionStyle设置modal的动画效果,可以选择4种样式。
18。 当设备发生改变时,系统会发送一个UIDeviceOrientationDidChangeNOtification通知,在UIKit的框架下可以监听这个通知。
19. UITextField可以设置自定义键盘,设置textField的inputView。
20. UITextField可以设置公用键盘输入,就是在键盘的上面添加一个view,可以在这个view上添加一些按钮啊,图片啊,等等。 设置UITextField的inputAccessoryView。
21. 使用NSTimer的方法scheduleTimerWithInterval中userinfo传递一个id,可以在参数selector中的入参中获取,入参为(NSTimer *)timer,从[timer userinfo]获取传递过来的userinfo的值。
22. UIPageControl一般就用到2个属性,numberOfPages,currentPage.
23. navigation导航控制器,由导航栏,控制器包含的内容视图,工具栏,这3部分组成。 导航控制器会有一个栈用来保存所有的viewController。
24. UIViewController获取到的navigation就是在navigation中添加此viewController时,将navigation赋值给viewcontroller。
25. UIViewController的多层关系,如果根视图控制器发生屏幕旋转,则自动告知它旗下的所有多层次结果中的子视图控制器。 (而UIView的多层次关系就不会)
26. 可以使用用图片设置颜色 [UIColor colorWithPatternImage:[UIImage imageNamed:@"img.png"]];
27. 一个导航控制器控制着若干个视图控制器,一个导航控制器包含一个NavigationBar和一个toolbar。NavigationBar中的“按钮”是一个UINavigationItem(only one)。通过设置UINavigationItem的属性,显示Item(UINavigationBar)。UINavigationItem不是navigationBar控制,更不是由UINavigationController来控制,而是由当前的视图控制器来控制。
28. 可以使用@[@"123", @"456", @"789"]; 定义数组。
29. UIToolBar中UIBarButtonSystemItemFlexibleSpace是用来设置间隔的。保证toolBar中的button,分布均匀。 可以使用UIBarButtonSystemItemFixedSpace来设置一个固定的宽度。
30。 drawRect实现渲染,动画。
31. UITabBarController是管理固定的几个视图控制器,子控制器时并列的,可以任意切换。一般都用UiTabBarController来做布局。(创建多个UIViewController,添加到UiTabBarController的viewControllers中)
32. UIBarButtonItem是UINavigationConroller中的left和right的button。UITabBarItem是UITabBarController上的Item。
33. UITabBarItem用的图片是30x30的,如果是一张60x60的图片,需要将图片的名字改成 alarm@2x.png样式的。
34. 国际化,在plist文件中添加一个Localizations的属性,添加一个Chinese(simplified)。实现app支持中文显示
35. UITabBarController的UITabBarItem多余5个的时候就会出现一个more的按钮。
36. UITabBarItem可以设置badgeValue属性显示红色图标标记,self.tabBarItem.badgeValue = @"new"; 此属性为一个NSString。
37. 设置UITabBarController的selectIndex可以来选择显示哪个视图。
38. 可以使用(1)[UIView beginAnimations: nil context: NULL]; (2)[UIView setAnimationDuration:0.3];(3) 之后 设置view的改变, (4)再写上 [UIView commitAnimations]; 可以实现让view的改变变成一个动画效果,在0.3秒钟完成这个view的改变。
39. 作为一个工具类库
40. 工具类库
41. 在xcode中,(1)黄色的文件夹为groups,在磁盘中不存在文件夹,只是为了方便管理。(2)蓝色的文件夹为folders,在磁盘上存在的文件夹。
42. 设置了UIViewController的title后,如果添加到UITabBarController中,就现在UiTabBarItem中的title中。
如果UIViewController添加到UINavigationController中,就显示在navigation中的title中。
43. 需要修改UINavigationController的title的字体,重写setTitle:的方法,创建一个UILabel,覆盖self.navigationItem.titleView.
44.UITableViewCell也有一个headerView 和一个footerView。
45. UITextView的inputAccessoryView属性,可以在键盘的正上方添加一个view,比如添加一个UIToolBar。
46.