UIBezierPath 到 NSData 到服务器到 Android
UIBezierPath to NSData to Server to Android
目前我有一个 class 符合包含 UIBezierPath 和 UIColor 的 NSCoding。
required init(coder aDecoder: NSCoder) {
super.init()
self.lineColor = aDecoder.decodeObjectForKey("color") as! UIColor
self.bezierPath = aDecoder.decodeObjectForKey("bezier") as! UIBezierPath
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(lineColor, forKey: "color")
aCoder.encodeObject(bezierPath, forKey: "bezier")
}
我用 NSKeyedArchiver 实现了这个
NSKeyedArchiver.archivedDataWithRootObject(path)
并将其保存在服务器上 (parse.com)
iOS 我可以毫无问题地取消存档。但是如何兼容Android?
您需要将路径和颜色转换为某种通用格式并以通用格式导出。像 SVG 之类的东西,包括 RGBA 值。 UIBezierPath
和键控归档是 iOS 具有私有二进制实现的特定项目 - 尝试在 Android 上使用它们将花费您很长时间,而不是未来的证明。
我同意韦恩的观点。您可以调用 self.bezierPath.CGPath 来检索 CGPath,然后您可以使用以下答案将其转换为 SVG。
How to convert CGPath to SVG
然后您可以以中性格式发送它。
目前我有一个 class 符合包含 UIBezierPath 和 UIColor 的 NSCoding。
required init(coder aDecoder: NSCoder) {
super.init()
self.lineColor = aDecoder.decodeObjectForKey("color") as! UIColor
self.bezierPath = aDecoder.decodeObjectForKey("bezier") as! UIBezierPath
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(lineColor, forKey: "color")
aCoder.encodeObject(bezierPath, forKey: "bezier")
}
我用 NSKeyedArchiver 实现了这个
NSKeyedArchiver.archivedDataWithRootObject(path)
并将其保存在服务器上 (parse.com) iOS 我可以毫无问题地取消存档。但是如何兼容Android?
您需要将路径和颜色转换为某种通用格式并以通用格式导出。像 SVG 之类的东西,包括 RGBA 值。 UIBezierPath
和键控归档是 iOS 具有私有二进制实现的特定项目 - 尝试在 Android 上使用它们将花费您很长时间,而不是未来的证明。
我同意韦恩的观点。您可以调用 self.bezierPath.CGPath 来检索 CGPath,然后您可以使用以下答案将其转换为 SVG。
How to convert CGPath to SVG
然后您可以以中性格式发送它。