符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
简单的模子。就是不需要实现细节,给别人看一个大致轮廓的东西。还有一层意思是很多功能中的一个,单独拿出来实现。
创新互联主要从事成都网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务青河,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值:
先说一下思想:
首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面。
第二个界面的只有一个UITextField,是为了输入文字,当输入文字,并且返回第一个界面的时候,当第二个视图将要消失的时候,就将第二个界面上TextFiled中的文字传给第一个界面,并且显示在UILabel上。
其实核心代码就几行代码:
下面是主要代码:(因为我是用storyBoard创建的工程,所以上面的属性和相应的方法,是使用系统生成的outlet)
一、在第二个视图控制器的.h文件中定义声明Block属性
?
1
2
3
4
5
6
7
8
9
typedef void (^ReturnTextBlock)(NSString *showText);
@interface TextFieldViewController : UIViewController
@property (nonatomic, copy) ReturnTextBlock returnTextBlock;
- (void)returnText:(ReturnTextBlock)block;
@end
第一行代码是为要声明的Block重新定义了一个名字
?
1
ReturnTextBlock
这样,下面在使用的时候就会很方便。
第三行是定义的一个Block属性
第四行是一个在第一个界面传进来一个Block语句块的函数,不用也可以,不过加上会减少代码的书写量
二、实现第二个视图控制器的方法
?
1
2
3
4
5
6
7
8
9
- (void)returnText:(ReturnTextBlock)block {
self.returnTextBlock = block;
}
- (void)viewWillDisappear:(BOOL)animated {
if (self.returnTextBlock != nil) {
self.returnTextBlock(self.inputTF.text);
}
}
其中inputTF是视图中的UITextField。
第一个方法就是定义的那个方法,把传进来的Block语句块保存到本类的实例变量returnTextBlock(.h中定义的属性)中,然后寻找一个时机调用,而这个时机就是上面说到的,当视图将要消失的时候,需要重写:
?
1
- (void)viewWillDisappear:(BOOL)animated;
方法。
三、在第一个视图中获得第二个视图控制器,并且用第二个视图控制器来调用定义的属性
如下方法中书写:
?
1
2
3
4
5
6
7
8
9
10
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
TextFieldViewController *tfVC = segue.destinationViewController;
[tfVC returnText:^(NSString *showText) {
self.showLabel.text = showText;
}];
}
第1步:为你的应用程序添加finger tips
制作demo时最重要的事情就是引导用户,这样他们就知道在什么地方与应用进行互动,他们希望应用能够在屏幕上导航。(我第一次是在Kevin Systrom的Instagram keynote上看到的)。
这一步并不难实现,可以通过GitHub上的开源项目完成(你也可以观看Apple TV上的现场演示。)
“Fingertips是一个小型库(一个类),可以演示iOS设备上所有触控和手势。”
只需两步,就可以让你的应用程序活起来。你需要做的就是:
1、把以下代码添加到你的Podfile中(希望你使用了Cocoapods):
pod 'Fingertips'
2、把下面5行代码添加到AppDelegate的didFinishLaunchingWithOptions中:
UIViewController *vc = self.window.rootViewController;
CGRect frame = [[UIScreen mainScreen] bounds];
self.window = [[MBFingerTipWindow alloc] initWithFrame:frame];
self.window.rootViewController = vc;
[self.window makeKeyAndVisible];
• 不要忘了#import
现在Air Mirroring你的app,你就可以发现一个超酷的触控指示圈:
第2步:录制一个简短的演示视频
记录真实设备屏幕的最好的方法是使用Reflector(13美元)。这是我个人最喜欢的。
它使用Air Mirror显示Mac上的iOS设备,并支持屏幕记录。
你可以选择是否展示frame以及使用哪个设备。
使用CMD+ R开始和停止录制。
第3步:把视频转换成GIF
下一步就是使用GIF Brewery(Mac App Store售价5美元)把演示视频转换为GIF。
有了这个工具,你只需选择开始和结束时间,这样就可以创建GIF。
你可以通过预览来决定是否要缩短或者加长视频时间。
通过这些步骤,你可以快速高效地为iOS应用创建一个demo。当然也有其它方法,我只是介绍一个我知道的,可以用来制作一个简洁简单直观demo的方式。
就是 代码的例子。比如说你有不会用的控件,从网上下载这个控件的demo 照着敲两遍,在理解一下它的意思,就会了。
总结一个小的Demo,先看效果图.
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(7, 50, 400, 400)];
label.text = @"离思五首\n元稹\n曾经沧海难为水,\n除却巫山不是云!\n取次花丛懒回顾,\n半缘修道半缘君!\n";
label.numberOfLines = 0;
label.backgroundColor = [UIColor colorWithRed:(arc4random()%173)/346.0 + 0.5 green:(arc4random()%173)/346.0 + 0.5 blue:(arc4random()%173)/346.0 + 0.5 alpha: 1];
label.font = [UIFont systemFontOfSize:30];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
配置iCloud,首先你就先要有一个真实的苹果开发者账号,没错,就是一年688的那个。开通了之后,在Xcode中新建一个项目。然后在 TARGETS - Capabilities - iCloud 中打开开关就可以了。
就像这样,是不是很简单啊。
诶,可是好像有什么地方不对,有些地方爆红了。
这是因为我们还没有给这个App ID 注册,所以接下来我们去苹果的 开发者官网 添加一个App ID,在添加的时候勾选 iCloud 服务就可以啦。
什么?你说你已经创建过App ID了???没关系,在管理App ID这边选择 Edit ,然后在勾选 iCloud 也是一样的。
这时候回到Xcode中在看一下,应该就已经没有爆红了吧。
什么???还有爆红??? 那你重启一下XCode试试吧。再不行,你重启一下电脑试试好了。
在Xcode中 iCloud 下边一共有三个可以勾选的服务,其中第一个就是 key-value storage ,这个也是最简单的 iCloud 使用方法了,他跟 NSUserDefaults 的使用方法基本一样,都是以键值对的方式存储数据。只不过处理iCloud的类为 NSUbiquitousKeyValueStore 。
存储数据的方式很简单,只要使用 setObject:forkey: 之后,使用 synchronize 同步一下就可以了。
获取数据的方式也一样,是要使用 objectForKey 就可以了。
看一下 NSUbiquitousKeyValueStore 的头文件,我们发现他还有一个通知消息
注册这个通知,就可以在数据修改的时候接收到通知,然后做对应的处理。最好的验证方法就是在存储了数据之后直接删除掉这个app,然后再次安装,这个时候就会触发该通知。
先放一下demo的[ 地址 。
以上就是关于配置iCloud和key-value存储的简单使用,后边我们再看看其他两种服务是怎么样使用的。
相较于key-value的存储类型,Documents是用来管理一些比较大的文件,比如用户创建的文档等等。
在我们打开iCloud选项的时候,系统就是自动为我们添加一个 xxx.entitlements 的文件,这个东西用来保证应用的安全性,确保只有你的应用才能访问你自己创建的文档,系统也是依赖于他来区分用户的iCloud账户中每个应用的文档。
查看这个 xxx.entitlements 我们会发现在他里边有这样的一个key Ubiquity Container Identifiers ,对应的value为 iCloud.$(CFBundleIdentifier) 。其实这个 $(CFBundleIdentifier) 就代表这你的APP ID。所以也可以看成是 iCloud.com.zzr.ZZRiCloudDemo 。
NSFileManager 主要是对文件的操作,我们用它来获取iCloud的存储地址。
根据我们的entitlements,通过 NSFileManager 就可以获得iCloud的存储地址,在获取地址之后,我们要先判断一下获取的地址是否为空,如果这个地址为空,则说明用户的iCloud暂时不可用,接下来一切的操作都没办法进行下去。
UIDocument 主要是用于对文件内容的操作。
其实获取了文件的地址之后,我们已经可以直接对文件进行操作了,但是官方还是让我们通过 UIDocument 来操作,因为当我们在对iCloud进行操作的时候,不止是只有我们自己对他进行操作, iCloud daemon 也会对iCloud操作,用 UIDocument 操作能够保证存取安全。
在使用 UIDocument 之前,我们新建一个类,继承于 UIDocument ,并且重写两个方法:
NSMetadataQuery 主要用来查询数据。
有了之前的准备工作,创建一个文档就非常简单了,只要创建好我们要保存的文件,通过
就可以将文档上传到iCloud中了。
我们以一个txt文件作为示范。
修改文档,其实就是重写文档,就是将上边创建文档中的 UIDocumentSaveForCreating 改为 UIDocumentSaveForOverwriting 。
删除文档其实就是通过之前的地址获取到文件,然后调用remove方法即可。
之前讲了增加、删除、修改,好像增删改查中只剩下查询这个方法没有介绍了。查询和前边几个有点不同,他需要用到 NSMetadataQuery 。
直接调用 startQuery 开始查询,iCloud就已经开始帮我们查询了,查询好之后,iCloud会通过通知来告诉我们查询到了东西。
所以我们注册两个通知
并相应他们
其中
就是查询到的内容的数组,遍历他,就可以获取到对应目录下的全部文件了。
先放一下demo的 地址 。
demo简单的制作了一个text文档的存储功能,一些交互没有完善,但是基本的增删改查功能都已经实现了。
以上就是 iCloud Document 的简单使用。此文章仅供个人学习使用,如有不当,希望大佬指出。