2017-10-30 16 views
0

UIImageCGImagelayer의 콘텐츠로 설정하려고 시도한 다음 layerviewlayer에 추가하려고했습니다.
노란색보기의 중심에 5 개의 별이 있어야합니다. 그게 내가 원하는거야.
그러나 별의 중심은 인 origin과 일치합니다. 수정하려면 어떻게해야합니까? 테스트 할의 여기 CALayer에 CGImage를 센터링하는 방법은 무엇입니까?

func putOnStars() { 
    let rect = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) 
    rect.backgroundColor = .yellow 
    view.addSubview(rect) 

    let baseLayer = CALayer() 
    baseLayer.contents = UIImage(named: "stars")?.cgImage 
    baseLayer.contentsGravity = kCAGravityCenter 
    rect.layer.addSublayer(baseLayer) 

} 

enter image description here

는 경우에 당신을 위해 별의 이미지입니다.

답변

3

baseLayerenter image description here 잘 작동합니다 정의 된 프레임 너무 baseLayer.contentsGravity = kCAGravityCenter을 가지고 있지 않지만 여전히 potision에있을거야 (0, 0).

1 : rect 동일 baseLayer의 프레임을 확인

는 두 가지 해결책이있다.

baseLayer.frame = rect.frame 

2 :이 코드를 구현 rect의 중심에 baseLayer의 위치를 ​​설정합니다. 이 코드를 구현 : CALayer 모든 종류의

baseLayer.position = rect.center 
+0

감사합니다. 프레임을 설정할 필요가 없다고 생각했습니다. – JsW

2

이 층의 frame을 보내기 CALayer의 중앙에 starsimage를 배치, 즉

let baseLayer = CALayer() 
    baseLayer.frame = rect.bounds //This Line 
    baseLayer.contents = UIImage(named: "stars")?.cgImage 
    baseLayer.contentsGravity = kCAGravityCenter 
    rect.layer.addSublayer(baseLayer) 

을, 당신은 frame를 정의 할 필요가 명시 적으로.

+0

감사합니다. 그것은 작동하지만 시안의 답은 그가 일찍부터 적용 할 것입니다. – JsW

+0

물론 이죠. 문제는 없습니다. 행복한 코딩 .. :) – PGDev