我可以为SKSpriteNode添加边框,类似于UIView吗?

时间:2014-01-02 18:20:13

标签: ios cocoa-touch sprite-kit border

我感兴趣的是,SKSpriteNode是否可以模仿UIView的行为,我可以指定边界和圆角半径?

    self.view.layer.borderColor = [UIColor lightGrayColor].CGColor;
    self.view.layer.borderWidth = 2;;
    self.view.layer.cornerRadius = 2;
    self.view.layer.masksToBounds = YES;

3 个答案:

答案 0 :(得分:6)

以下是SKSpriteNode的一个简单的dropin扩展,它将允许您在节点周围绘制具有给定颜色的边框。

import SpriteKit

extension SKSpriteNode {
    func drawBorder(color: UIColor, width: CGFloat) {
        let shapeNode = SKShapeNode(rect: frame)
        shapeNode.fillColor = .clear
        shapeNode.strokeColor = color
        shapeNode.lineWidth = width
        addChild(shapeNode)
    }
}

答案 1 :(得分:4)

不是原生的。虽然您可以添加一个SKShapeNode作为您使用path创建CGPathCreateWithRoundedRect的孩子。

答案 2 :(得分:0)

extension SKSpriteNode {

    func drawBorder(color: UIColor, width: CGFloat) {

        for layer in self.children {
        
            if layer.name == "border" {
            
                layer.removeFromParent()
            
            }
        
        }
    
        let imageSize = self.texture?.size()
    
        let lineWidth = (imageSize!.width / self.size.width) * width
    
        let shapeNode = SKShapeNode(rect: CGRect(x: -imageSize!.width/2, y: -imageSize!.height/2, width: imageSize!.width, height: imageSize!.height))
        shapeNode.fillColor = .clear
        shapeNode.strokeColor = color
        shapeNode.lineWidth = lineWidth
        shapeNode.name = "border"
        shapeNode.zPosition = 1001
        self.addChild(shapeNode)
    
        self.zPosition = 1000

    }

}