【发布时间】:2016-08-03 20:16:36
【问题描述】:
我有一个UIView 的子类连接到UIViewController 的XIB 文件。
我正在使用PocketSVG 将我的SVG 文件转换为CGPath,如下所示:
override func awakeFromNib() {
let myPath = PocketSVG.pathFromSVGFileNamed("").takeUnretainedValue()
let myShapeLayer = CAShapeLayer()
myShapeLayer.path = myPath
myShapeLayer.strokeColor = UIColor.redColor().CGColor
myShapeLayer.lineWidth = 3
myShapeLayer.fillColor = UIColor.whiteColor().CGColor
self.layer.addSublayer(myShapeLayer)
}
问题是,当我运行应用程序时,我什么都看不到,图层也不可见。
我现在做错了什么?
谢谢!
【问题讨论】:
-
如果你断点并打印
myShapeLayer,它的框架是什么?乍一看,好像你没有给形状图层一个框架,这意味着它的框架是CGRectZero,它不会出现在屏幕上。 -
首先,你确定你得到一个有效的
CGPathRef吗?我会检查myPath。其次,当您覆盖awakeFromNib时,您可能需要调用super。 -
@keithbhunter 是的,框架是
0,0,0,0,要改成self.view? -
@Rob 如何查看
myPath?PocketSVG返回CGPath -
Re
frame的形状层,设置为self.view.bounds。回复myPath,确保它不为空。其次,你可以调用各种 CGPath 函数,比如CGPathGetPathBoundingBox,看看你是否从中得到了一个合理的矩形。
标签: ios objective-c iphone swift cocoa-touch