Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将图像添加到bezierpath内的CAShapeLayer_Ios_Swift_Calayer_Cashapelayer - Fatal编程技术网

Ios 将图像添加到bezierpath内的CAShapeLayer

Ios 将图像添加到bezierpath内的CAShapeLayer,ios,swift,calayer,cashapelayer,Ios,Swift,Calayer,Cashapelayer,我正在努力实施 在我的应用程序中,对于每个轮子切片,我试图将自定义图像添加到其shapelayer,或者在切片内部以任何其他可能的方式添加到其边界和路径,但我无法这样做。我尝试将图像添加到新shapelayer的内容中,并将其添加到我的饼图切片中,但也没有成功 for wedgeNumber in 0..<numberOfWedges { let wedge: SpinWheelWedge = source.wedgeForSliceAtIndex(index: wedge

我正在努力实施 在我的应用程序中,对于每个轮子切片,我试图将自定义图像添加到其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)
    }
0中的WedgeEnumber的
。。
修改后的代码

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
}

用于0中的WedgeEnumber。简而言之,图像需要
CALayer
,楔形路径需要
CAShapeLayer
。使用形状层作为图像层的遮罩。我用所需的cgpath制作了一个遮罩层,遮罩了我的图像层(CALayer),然后将图像层作为子层添加到我的楔块(UIVIew)中。图像在切片中仍然不可见。请检查图像层上的边界。它与帧不同,可能将图像移动到可视区域之外。另外,在添加映像后设置断点,并检查Xcode中的调试器可以显示什么imageLayer@AshwinShrestha你能分享一下你的样本项目吗?这样我可以检查一下。谢谢,谢扎德。。。我可以通过使用与楔形形状相同的bezierpath形状遮罩图像视图来实现这一点。@AshwinShrestha您好。你能分享你的图像解决方案吗?
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
}