基础知识
- Apple 的简介
- Xcode 面板介绍
和 Android Studio 还是有很大差距的,而且快捷键很不适应。学习阶段先用 Xcode,实际开发可能会使用 AppCode 。 - ViewControl 和 View 的关系
ViewControl 相当于 Android 中的 Activity ,都是某个界面的逻辑实现类。 - iOS 开发中的连线
可以分为给UI组件命名和给事件添加方法。对于简单的界面来说,还是很方便的。但复杂的界面估计还是要靠代码实现。 - 代码动态创建 UI 组件,并设置属性、事件
- 两种动画方式:直接动画和 Block 动画
UIView 相关属性
- tag :每个继承UIView 的唯一标识
- removeFromSuperView、addsubView、subViews
- viewWithTag、frame、transform
这些属性、方法在 Android 中都会有响应的对应,理解起来应该很容易。
- NSBundle 中获取资源路径
- UIImageView animationImages 播放动画
- UIImage 的两种创建方式
[UIImage imageNamed:@"hiehei"];
从 asset 中加载,速度快,但是常驻内存
UIImage *test = [UIImage imageWithContentsOfFile:@"hiehei"];
从 bundle 中加载,速度慢,但是没有引用的时候,会自动释放
- 相对布局的实现
CGFloat CGRectGetMaxY(CGReact *react) - 字典转模型
定一个一个类,提供实例方法和类方法 - xib 的使用: 其实就是 安卓中的自定义 View
- 代码块的设置
- [array makeObjectsPerformSelector:@selector(removeFromSuperview)];
让数组中的每个元素执行一个方法 forEach - [array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
}];
遍历数组,速度快,stop === yes 立即停止, - rootView.userInteractionEnabled = YES;
是否允许用户交互,如果可以影响子控件 - [rootView performSelector:@selector(testXib)]; 延迟执行一个方法,类似 View.postRunable
- 状态栏的设置
10 .self presentViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#> completion:<#^(void)completion#>
跳转界面 - UIAlertController alert 对话框
- [self.targetView bringSubviewToFront:subView];
和 安卓一样的方法,哈哈 - KVC 很有意思,安卓没有这东西,可以自动类型转换
AppModel *appModel = [[AppModel alloc] init];
[appModel setValue:@"xiao王" forKey:@"name"];
[appModel setValue:@"xiao王" forKeyPath:@"book.name"];
NSString *name = [appModel valueForKey:@"book.name"];
[appModel setValuesForKeysWithDictionary:dict];
NSArray *array = @[appModel, appModel];
NSArray *nameArray = [array valueForKey:@"name"];
ScrollView
- 常用属性
contentSize: 滚动范围,一定要比 ScrollView 本身大
contentInSet: 内边距,变相的扩大了 contentSize
contentOffset: 偏移量 - 不能滚动的原因
- contentSize 没有 ScrollView size 大
- userInteractionEable
- scrollEable
- 设置 scrollView 的内容的缩放、缩放倍数、监听回调
(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView - PageControl 的使用
- NStimer 的使用
fire 会立即执行;inviladate 失效,失效后需要重新创建 - NSRunloop 提高 timer 的优先级,否则有其他 scrollView 滚动的时候,timer 优先级比较低,会停止工作
- 代理为什么要使用 weak 修饰符:因为两个对象相互引用,必须有一个是 weak ,否则没法释放内存
UITableView (也就是安卓中的 ListView,但是系统提供的功能更多)
- 显示单组数据、多组数据(Plain, Group 两种模式)、为每个组设置 Header 和 Footer(title, view 两种样式), 为 TableView 设置 HeaderView、FooterView
- Cell 的重用、编辑、删除、插入
- 列表索引的显示 ABCDE....
- 数据刷新:刷新所有、刷新某行
if (self = [super init]) {
}
return self;
直接写成 [super init]; .... return self;
网友评论