如何将视图层次结构和内容输出到文件?
How to output a view hierarchy & contents to file?
我正在编写一个美化的 'paint' 应用程序,用户可以在其中粘贴图像,绘制一堆 UIBezier 曲线,然后移动所有这些东西并旋转它们。
其中大部分是通过将 UIImageView 和(子类)UIView 作为子视图堆叠到视图控制器中的主视图上来实现的。
我希望用户能够将他们的创作状态保存为某种文件并与他人共享(例如通过 DropBox)。
保存本身不是问题(我知道如何保存文件!),问题只是 'best' 将所有信息从应用程序获取到文件然后将其加载回文件的方法.
我猜已经有完善的框架可以做到这一点,但奇怪的是,还没有找到任何解决这个问题的方法。
因此,在我着手编写自己的自定义方法来执行所有这些操作之前,我想我会问:
是否有一些推荐的、批准的(甚至可能 'easy' ;-))方法来实现保存——就像写入文件一样——a 的所有子视图的状态给定 UIView?
你对我的建议"trying to do"?谢谢。
tl;博士
往下走:
NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")
即将推出:
let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")
)
NSCoding
enables the creation of archives
,其中
provide a means to convert objects and values into an architecture-independent stream of bytes.
现在我们已经有了拼图的所有部分,让我们把它们放在一起:
我们知道我们需要一个存档器,所以让我们搜索文档,直到找到有希望的东西:
宾果! NSKeyedArchiver
让我们使用此 class 将 UIView 序列化为具有 archiveRootObject:toFile:
. Then we'll deserialize it from a file with unarchiveObjectWithFile:
的文件。
保存到文件:
NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")
正在从文件读取:
let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")
我正在编写一个美化的 'paint' 应用程序,用户可以在其中粘贴图像,绘制一堆 UIBezier 曲线,然后移动所有这些东西并旋转它们。
其中大部分是通过将 UIImageView 和(子类)UIView 作为子视图堆叠到视图控制器中的主视图上来实现的。
我希望用户能够将他们的创作状态保存为某种文件并与他人共享(例如通过 DropBox)。
保存本身不是问题(我知道如何保存文件!),问题只是 'best' 将所有信息从应用程序获取到文件然后将其加载回文件的方法.
我猜已经有完善的框架可以做到这一点,但奇怪的是,还没有找到任何解决这个问题的方法。
因此,在我着手编写自己的自定义方法来执行所有这些操作之前,我想我会问:
是否有一些推荐的、批准的(甚至可能 'easy' ;-))方法来实现保存——就像写入文件一样——a 的所有子视图的状态给定 UIView?
你对我的建议"trying to do"?谢谢。
tl;博士
往下走:NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")
即将推出:let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")
NSCoding
enables the creation of archives
,其中
provide a means to convert objects and values into an architecture-independent stream of bytes.
现在我们已经有了拼图的所有部分,让我们把它们放在一起:
我们知道我们需要一个存档器,所以让我们搜索文档,直到找到有希望的东西:
宾果! NSKeyedArchiver
让我们使用此 class 将 UIView 序列化为具有 archiveRootObject:toFile:
. Then we'll deserialize it from a file with unarchiveObjectWithFile:
的文件。
保存到文件:NSKeyedArchiver.archiveRootObject(view, toFile: "/path/to/archive")
正在从文件读取:let view = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive")