在其 uibezierpath 中将图像添加到 CAShapeLayer
Add an image to to CAShapeLayer within its bezierpath
我正在尝试实施
https://github.com/joshdhenry/SpinWheelControl 我的应用程序中的库,我试图为每个轮子切片添加一个自定义图像到它的 shapelayer,或者切片内的任何其他可能的方式到它的边界和路径,我无法这样做。我尝试将图像添加到新的 shapelayer 的内容中,并将其添加到我的饼图切片中,但它也没有用。
for wedgeNumber in 0..<numberOfWedges {
let wedge: SpinWheelWedge = source.wedgeForSliceAtIndex(index: wedgeNumber)
//Wedge shape
wedge.shape.configureWedgeShape(index: wedgeNumber, radius: radius, position: spinWheelCenter, degreesPerWedge: degreesPerWedge)
wedge.layer.addSublayer(wedge.shape)
let layer = CAShapeLayer()
layer.contents = UIImage(named: "sample.jpg")?.cgImage
layer.bounds = wedge.shape.bounds
layer.path = wedge.shape.path
wedge.shape.addSublayer(layer)
spinWheelView.addSubview(wedge)
}
模拟器中的输出:
为什么我无法将图像添加到形状图层??
需要输出
提前致谢
class CustomImageView: UIImageView{
var bezierPath = UIBezierPath()
override func setNeedsLayout() {
bezierPath.reversing()
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.bounds
shapeLayer.path = bezierPath.cgPath
self.layer.mask = shapeLayer
self.layer.masksToBounds = true
}
}
你修改后的代码
for wedgeNumber in 0..<numberOfWedges {
let wedge: SpinWheelWedge = source.wedgeForSliceAtIndex(index: wedgeNumber)
//Wedge shape
wedge.shape.configureWedgeShape(index: wedgeNumber, radius: radius, position: spinWheelCenter, degreesPerWedge: degreesPerWedge)
wedge.layer.addSublayer(wedge.shape)
let imageLayer = CustomImageView()
imageLayer.image = UIImage(named: "sample.jpg")
imageLayer.bezierPath = wedge.shape.path
imageLayer.setNeedsLayout()
// Here you will get an image view with specified path
you can subview this imageLayer to the required view
}
我正在尝试实施 https://github.com/joshdhenry/SpinWheelControl 我的应用程序中的库,我试图为每个轮子切片添加一个自定义图像到它的 shapelayer,或者切片内的任何其他可能的方式到它的边界和路径,我无法这样做。我尝试将图像添加到新的 shapelayer 的内容中,并将其添加到我的饼图切片中,但它也没有用。
for wedgeNumber in 0..<numberOfWedges {
let wedge: SpinWheelWedge = source.wedgeForSliceAtIndex(index: wedgeNumber)
//Wedge shape
wedge.shape.configureWedgeShape(index: wedgeNumber, radius: radius, position: spinWheelCenter, degreesPerWedge: degreesPerWedge)
wedge.layer.addSublayer(wedge.shape)
let layer = CAShapeLayer()
layer.contents = UIImage(named: "sample.jpg")?.cgImage
layer.bounds = wedge.shape.bounds
layer.path = wedge.shape.path
wedge.shape.addSublayer(layer)
spinWheelView.addSubview(wedge)
}
模拟器中的输出:
为什么我无法将图像添加到形状图层??
需要输出
提前致谢
class CustomImageView: UIImageView{
var bezierPath = UIBezierPath()
override func setNeedsLayout() {
bezierPath.reversing()
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.bounds
shapeLayer.path = bezierPath.cgPath
self.layer.mask = shapeLayer
self.layer.masksToBounds = true
}
}
你修改后的代码
for wedgeNumber in 0..<numberOfWedges {
let wedge: SpinWheelWedge = source.wedgeForSliceAtIndex(index: wedgeNumber)
//Wedge shape
wedge.shape.configureWedgeShape(index: wedgeNumber, radius: radius, position: spinWheelCenter, degreesPerWedge: degreesPerWedge)
wedge.layer.addSublayer(wedge.shape)
let imageLayer = CustomImageView()
imageLayer.image = UIImage(named: "sample.jpg")
imageLayer.bezierPath = wedge.shape.path
imageLayer.setNeedsLayout()
// Here you will get an image view with specified path
you can subview this imageLayer to the required view
}