2017-11-24 24 views
0

현재 이미지를 처리 ​​할 수있는 iOS 응용 프로그램을 개발 중입니다. (회전, 확대/축소, 번역). 나는 제스처를 추가 한 uiimageview를 사용하고 있습니다. 이 잘 작동하지만 고정 된 크기의 마스킹 사각형이 있습니다. Initial State마스킹을 사용하는 iOS CGAffineTransform

내 이미지를 처리 ​​한 후 내 마스킹 사각형 안에있는 콘텐츠를 원합니다. 나는 또한 처리 된 이미지의 마스킹 사각형의 네 가장자리를 원한다.

저는 어떻게 든 포인트에 imageview 변환을 적용해야한다는 것을 알고 있지만 작동하지 않습니다.

let points = maskView.edgePoints() 

    let translateTransform = CGAffineTransform(translationX: translationPoint.x, y: translationPoint.y) 
    let rotateTransform = CGAffineTransform(rotationAngle: CGFloat(rotationAngle)) 
    let scaleTransform = CGAffineTransform(scaleX: xScale, y: yScale) 

    let finalTransform = rotateTransform.concatenating(scaleTransform).concatenating(translateTransform) 

    let topleftPoint = points[0].applying(finalTransform) 
    let toprightPoint = points[1].applying(finalTransform) 
    let bottomleftPoint = points[2].applying(finalTransform) 
    let bottomrightPoint = points[3].applying(finalTransform) 

에지 포인트 결과 : Sample

좌상 (50.75, -8.75)

Topright (63.6072332330383, -365.252863911729)

Bottomleft (-172.064289944831, -16.7857707706489)

하단 : (-159.207056711792, -373.288634682378)

그러나 Topleft는 (0,0) 과 같은 것이고 Bottomleft는 (40,200)과 비슷해야합니다.

어쩌면 당신은 나에게 약간의 힌트 또는 유용한 링크를 줄 수 있습니다!

미리 Thx!

+0

검은 색 직사각형 아래 부분을 자르시겠습니까? –

+0

너는 진실한 바운드에 클립을 놓을 수 있는다 –

+0

나는 무엇을 실제로하는 것을 알아낼 수 없는가? 왜'maskView.edgePoints'에 변형을 적용할까요? 검은 경계가 그에 맞게 움직이기를 원합니까? –

답변

0

문제는 변환 순서에 있습니다. 현재 변환 순서는 Rotate Scale Translate입니다. 대신 Scale Rotate Translate로 설정해야합니다.

let finalTransform = scaleTransform.concatenating(rotateTransform).concatenating(translateTransform)