首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像添加到其bezierpath路径内的CAShapeLayer

将图像添加到其bezierpath路径内的CAShapeLayer
EN

Stack Overflow用户
提问于 2018-01-08 12:22:31
回答 1查看 872关注 0票数 0

我正在尝试在我的应用程序中实现https://github.com/joshdhenry/SpinWheelControl库,对于每个轮子切片,我试图将一个自定义图像添加到它的shapelayer中,或者在切片内部的边界和路径中添加任何其他可能的方式,但我无法做到这一点。我尝试将图像添加到新shapelayer的内容中,并将其添加到我的饼图切片中,但也不起作用。

代码语言:javascript
复制
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)
    }

模拟器中的输出:

为什么我无法将图像添加到形状层??

所需的输出

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 13:43:01

代码语言:javascript
复制
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
}

}

修改后的代码

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48144196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档