我有一个带有属性字符串的UITextView和UIImageViews / UIViews作为UITextView的子视图。 我想保存整个UITextView(带子视图),以便以后可以编辑。 我从这段代码片段中看到了NSKeyedArchiver:
- (NSData *)dataForView:(UIView *)view
{
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:view forKey:@"view"];
[archiver finishEncoding];
return (id)data;
}
但是,根据此线程NSKeyedArchiver returning nil for UIView's subviews,不应使用NSKeyedArchiver来保存整个UIView。
保存为图像,
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(image1);
[imageData writeToFile:myPath atomically:YES];
似乎不是解决方案,因为app应该支持重新编辑和重新保存。
成功保存为PDF格式,但是,我们可以将PDF重新加载回UITextView进行编辑吗?根据这个帖子,Displaying PDF content in UITextView,这是不可能的!
非常想为此获得解决方案。任何帮助将不胜感激。
P.S。不能将UITextView替换为UIWebView。
答案 0 :(得分:0)
听起来像是CoreData。
您需要一个简单的SQLite数据库架构,它可以存储具有任何相关文本属性的文本。 UIImageViews的图像可以以合适的格式写入磁盘,UIImageViews的x,y值可以与保存的图像文件名一起保存到数据库中。
恢复编辑后,您只需从SQLite数据库中读取即可重新创建UITextView及其UIImageView子视图。