Subin
Subin

Reputation: 114

CALayer and Uiview

i wants to add a uiview insdie my CAlayer,i tried and I don't get correct answer,help me..my codes are

  var sublayer = CALayer()
    sublayer.backgroundColor = UIColor.clearColor().CGColor
    sublayer.shadowOffset = CGSizeMake(0, 3)
    sublayer.shadowRadius = 5.0
    sublayer.shadowColor = UIColor.clearColor().CGColor
    sublayer.shadowOpacity = 0.8
    sublayer.frame = CGRectMake(X,Y,WIDTH,HEIGHT)
    sublayer.borderColor = UIColor.yellowColor().CGColor
    sublayer.borderWidth = 2.0
    sublayer.cornerRadius = 10.0
    StrikezoneImg.layer.addSublayer(sublayer)

    let Hitpoint:CGPoint =  TOUCHPOINT
    let hitView = UIView(frame: CGRect(x:0, y:0, width: 15, height: 15))
    hitView.center = CGPoint(x: Hitpoint.x, y: Hitpoint.y)
    hitView.layer.cornerRadius = 8.0
    hitView.backgroundColor = UIColor.greenColor()
    mainImage.addSubview(hitView)

    var imageLayer = CALayer()
    imageLayer.frame = sublayer.bounds
    imageLayer.cornerRadius = 10.0
    imageLayer.contents = hitView//(UIImage(named: "clock")!.CGImage as! AnyObject)
    imageLayer.masksToBounds = true
    sublayer.addSublayer(imageLayer)

Upvotes: 1

Views: 76

Answers (2)

pedrouan
pedrouan

Reputation: 12910

Change your last line of code:

sublayer.addSublayer(imageLayer)

to

StrikezoneImg.layer.addSublayer(imageLayer)

as you should add sublayers to your UIView/UIImageView, not to CALayer.

Upvotes: 0

LuckBill
LuckBill

Reputation: 11

I copied your code. here's what i see. i don't know if you need it.

    let StrikezoneImg = UIImageView()
    StrikezoneImg.frame = self.view.bounds
    self.view.addSubview(StrikezoneImg)

    let sublayer = CALayer()
    sublayer.backgroundColor = UIColor.clearColor().CGColor
    sublayer.shadowOffset = CGSizeMake(0, 3)
    sublayer.shadowRadius = 5.0
    sublayer.shadowColor = UIColor.clearColor().CGColor
    sublayer.shadowOpacity = 0.8
    sublayer.frame = CGRectMake(100,110,200,200)
    sublayer.borderColor = UIColor.purpleColor().CGColor
    sublayer.borderWidth = 2.0
    sublayer.cornerRadius = 10.0
    StrikezoneImg.layer.addSublayer(sublayer)

1.png

Upvotes: 1

Related Questions