课程名称 | IOS开发 | 任课老师 | 郑贵锋 |
---|---|---|---|
年级 | 16 | 专业(方向) | 软件工程(计算机应用方向) |
学号 | 16340132 | 姓名 | 梁颖霖 |
电话 | 13680473185 | [email protected] | |
开始日期 | 2019/3/25 | 完成日期 | 2019/3/27 |
IOS UI编程
IOS 网络访问
IOS 本地存储
1.文本框——UILabel
2.静态图——UIImageView
3.动态图——UIImageView
4.按键——UIButton
5.切换按钮——UISwitch
6.单行输入框——UITextField
7.多行输入框——UITextView
UITableView是一个列表控件,广泛运用于App的各个界面。
两种风格
结构包括(见图)
步骤:
ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。
代码创建
UIViewController *controller = [[UIViewController alloc] init];
StoryBoard创建
利用StoryBoard还可以创建TabBar,可以直接用拖动操作
注意点:要打开IOS9 的HTPP请求限制,不然会出现访问出错的情况
发起一个Get请求需要以下几个步骤
-(void) sendHTTPGet
{
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
// 创建Session。
NSURLSession *delegateFreeSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
NSURL * url = [NSURL URLWithString:@"http://127.0.0.1:18081/user?id=1"];
// 构建Request对象。
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 创建NSURLSessionDataTask。
NSURLSessionDataTask * dataTask = [delegateFreeSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// 执⾏Task
if(error == nil)
{
NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"Data = %@",text);
}
}];
[dataTask resume];
}
发起一个Post请求需要以下几个步骤
-(void) sendHTTPPost
{
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
// 创建Session。
NSURLSession *delegateFreeSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]];
NSURL * url = [NSURL URLWithString:@"http://127.0.0.1:18081/edit"];
// 构建可变的Request对象。
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
NSString * params =@"id=1&name=Test&age=50";
// 设置请求⽅法为POST,设置请求体数据。
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
// 执⾏Task
NSURLSessionDataTask * dataTask = [delegateFreeSession dataTaskWithRequest:urlRequest];
[dataTask resume];
}
这与get请求类似,只不过这里创建的是NSURLSessionDownloadTask,要稍微注意下其中的参数设置
-(void)downloadFile
{
// 设置url
NSURL * url = [NSURL URLWithString:@"http://127.0.0.1:18081/download/test.txt"];
// 创建Session。
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject
delegate:self
delegateQueue: [NSOperationQueue mainQueue]];
// 创建NSURLSessionDownloadTask。
NSURLSessionDownloadTask * downloadTask =[ defaultSession downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error)
{
// 处理Response
if(error == nil)
{
NSLog(@"Temporary file =%@",location);
NSError *err = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSURL *docsDirURL = [NSURL fileURLWithPath:[docsDir stringByAppendingPathComponent:@"out.zip"]];
if ([fileManager moveItemAtURL:location
toURL:docsDirURL
error: &err])
{
NSLog(@"File is saved to =%@",docsDir);
}
else
{
NSLog(@"failed to move: %@",[err userInfo]);
}
}
}];
[downloadTask resume];
}
这节课还提到了一个轻量级⽹络请求开源框架AFNetworking,使用这个框架提供的API可以轻松的进行网络访问,这里先记住这个框架,在初始的学习的阶段还是先用原生的练练手,熟悉后再去学习这个框架的使用
IOS 沙盒
:每⼀个App都有⼀个存储空间。iOS系统为每个应⽤程序创建⾃⼰的⽬录,每个应⽤程序只能访问⾃⼰的⽬录,不能相互通。
目录结构如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
// 获取document目录
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [documentPaths objectAtIndex:0];
// 获取Cache目录
NSArray *cachePaths = NSSearchPathForDirectoriesInDomains
(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [cachePaths objectAtIndex:0];
// 获取Library目录
NSArray *libraryPaths = NSSearchPathForDirectoriesInDomains
(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryPath = [libraryPaths objectAtIndex:0];
// 获取Tmp目录
NSString *tmpPath = NSTemporaryDirectory();
_label.text = [NSString stringWithFormat:@"Document: %@\nCache: %@\nLibrary: %@\nTmp: %@", documentPath, cachePath, libraryPath, tmpPath];
}
文件操作这里要用到NSFileManager
这个类
首先要创建fileManager对象,并且判断文件是否存在
// 判断文件是否存在
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *document = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *filePath = [document stringByAppendingPathComponent:@"test.txt"];
if ([fileManager fileExistsAtPath:filePath]) {
NSLog(@"test.txt exists");
}
BOOL isDirectory;
if ([fileManager fileExistsAtPath:filePath isDirectory:&isDirectory]) {
}
创建目录
// 创建目录
NSString *testDir = [document stringByAppendingPathComponent:@"test"];
// 存放创建失败的错误,方便后面来进行判断操作
NSError *error;
[fileManager createDirectoryAtPath:testDir withIntermediateDirectories:YES attributes:nil error:&error];
创建文件
// 创建文件
NSString *testTxt = [testDir stringByAppendingPathComponent:@"test.txt"];
NSData *data = [@"Hello world!" dataUsingEncoding:NSUTF8StringEncoding];
[fileManager createFileAtPath:testTxt contents:data attributes:nil];
删除文件
// 删除文件
[fileManager removeItemAtPath:testTxt error:nil];
写文件
- (IBAction)write:(id)sender {
// 文件父目录
NSString *document = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
// 文件目录
NSString *filePath = [document stringByAppendingPathComponent:@"text.txt"];
// 写入的内容
NSString *contents = @"Hello world!";
// 调用writeToFile
[contents writeToFile:filePath atomically:YES
encoding:NSUTF8StringEncoding error:nil];
}
读文件
- (IBAction)read:(id)sender {
// 文件父目录
NSString *document = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
// 文件目录
NSString *filePath = [document
stringByAppendingPathComponent:@"text.txt"];
// 将文件内容读入字符串
NSString *content = [NSString stringWithContentsOfFile:filePath
encoding:NSUTF8StringEncoding error:nil];
NSLog(@"content %@", content);
}
读取代码
// read
NSInteger x = [[NSUserDefaults standardUserDefaults]
integerForKey:@"x"];
NSString *name = [[NSUserDefaults standardUserDefaults]
stringForKey:@"name"];
NSDictionary *dict = [[NSUserDefaults standardUserDefaults]
objectForKey:@"button"];
data = [[NSUserDefaults standardUserDefaults] dataForKey:@"user"];
user = [NSKeyedUnarchiver unarchivedObjectOfClass:[User class]
fromData:data error:nil];
写入代码
// save
[[NSUserDefaults standardUserDefaults] setInteger:1024 forKey:@"x"];
[[NSUserDefaults standardUserDefaults] setObject:@"Tom" forKey:@"name"];
[[NSUserDefaults standardUserDefaults] setObject:@{
@"text": @"Cancel",
@"color": @"#ff0000",
} forKey:@"button"];
User *user = [[User alloc] init];
user.userId = 123;
user.nickname = @"Tom";
user.isVip = YES;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:user requiringSecureCoding:YES error:nil];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"user"];