2017-03-30 13 views
1

이미지 뷰가있는 컨테이너 뷰와 원 모양의 circleView가 있습니다. 핀치 제스처로 원 모양의 circleView가 아닌 ​​이미지 뷰의 배율을 조정하고 싶습니다.스케일링 뷰의 서브 뷰 문제

다음은뿐만 아니라 circleView가 축소지고로 컨테이너보기 이미지 뷰를 확장에 내 코드

if(gestureRecognizer.state == .began || gestureRecognizer.state == .changed) { 

     let currentScale: CGFloat = containerView.layer.value(forKeyPath: "transform.scale") as! CGFloat 

     // Constants to adjust the max/min values of zoom 
     let kMaxScale: CGFloat = 2.0 
     let kMinScale: CGFloat = 1.0 

     var newScale = 1 - (lastScale - gestureRecognizer.scale) 
     // new scale is in the range (0-1) 

     newScale = min(newScale, kMaxScale/currentScale) 
     newScale = max(newScale, kMinScale/currentScale) 
     containerView.transform = containerView.transform.scaledBy(x: newScale, y: newScale) 

     lastScale = gestureRecognizer.scale 
    } 

입니다.

누구든지 하위보기의 크기가 조절되는 것을 방지 할 수 있습니다.

답변

0

뷰는 superview에서 참조 프레임을 상속받습니다. 보기에 변환을 적용하면보기에 영향을 미치며 모든보기는 수퍼 뷰입니다. 마치 그림이 그려지는 종이를 축소하는 것과 같습니다. 물론 용지가 줄어들면 그림이 축소됩니다.

다른보기 하위보기로 설정하지 마십시오. 보기가 형편없는보기 위에 놓이는 형제보기를 만듭니다. 그런 식으로 그들은 영향을받지 않을 것입니다.

+0

감사합니다. 컨테이너보기를 확장 한 후에 원보기를 사용하여 컨테이너보기를 터치하는 원을 추가하고 싶습니다. @Duncan –

+0

질문을 편집하여 시도한 코드를 표시하면 나와 다른 사람이 귀하를 도울 수 있습니다. –