字节跳动青训营
现状和基本开发
内存管理和block
多线程和GCD
UIKit和Swift
手势和动画
存储与网络、多媒体技术和设计模式
UI控件篇
在说到控件前,需要说一下ios端App中的UI显示需要的准备工作:
- 针对于父控件的大小、坐标
- 内容,包括图片、数据、文字等
- 显示的样式,例如UILabel显示的文字颜色、大小等
UIImageView 与 UILabel
UIButton 与 UITextField
UIScrollView
UICollectionView
UIPickView
UISwitch 与 UIProgressView
UIAlertController
WKWebView
Quartz2D
CALayer、动画、手势、事件
控制器篇
UIViewController
- 最基础的控制器,想放什么放什么,可以理解为一张白纸
- 一些设置
//设置背景色
self.view.backgroundColor = [UIColor redColor];
//平铺的方式设置背景
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"back"]];
//添加控件
[self.view addSubview: self.btn];
自定义根控制器 与 UINavigationController
自定义根控制器与UINavigationController
UICollectionViewController 与 UITabBarController
UICollectionViewController 与 UITabBarController
UITableViewController
功能篇
- 这个部分主要聚焦在数据获取的功能,例如获取图片,JSON等
- 大概的分类依据为,从plist、从数据库、从网络等
读取plist和数组转模型
访问网络
SQLite数据库
数据界面间传递
Bluetooth蓝牙
多线程
存储本地信息
第三方框架篇
babyBluetooth
SnpaKit与Masonary
AFNetworking
SDWebImage
FMDB
系统相关
获取系统相关的信息
- 状态栏高度和导航栏高度
//swift
let navHeight = navigationController?.navigationBar.frame.size.height
//$0 闭包 表示第一个参数
let statusHeight = UIApplication.shared.windows.first{$0.isKeyWindow}?.windowScene?.statusBarManager?.statusBarFrame.size.height
//oc
CGFloat navHeight = self.navigationController.navigationBar.bounds.size.height;
CGFloat statusHeight = [UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFrame.size.height;
- keyWindow,也就是最下面的视图
//swift
UIApplication.shared.windows.first{$0.isKeyWindow}
//oc
[UIApplication sharedApplication].windows.firstObject;
其他
app设计思路分享
数据处理
- 这个部分整理一些遇到的数据处理方面的内容 数据处理
一些小点
modal跳转与视图生命周期
沙盒目录
#import "NSString+Sendbox.h"
@implementation NSString (Sendbox)
//缓存
- (instancetype)appendCache{
return [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[self lastPathComponent]];
}
//暂存
- (instancetype)appendTemp{
return [NSTemporaryDirectory() stringByAppendingPathComponent:[self lastPathComponent]];
}
//文件
- (instancetype)appendDocument{
return [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[self lastPathComponent]];
}
@end
快捷键
CMD + CTRL + E 全局修改
CTRL + 6 直接输入,支持智能搜索和匹配
CMD + SHIFT + O 全局搜索
CMD + SHIFT + F 全局查找
CMD + L 跳行
CMD + SHIFT + J 定位文件
CMD + OPTION + N 新建文件夹
CMD + N 新建文件
CMD + SHIFT + N 新建项目