owned this note changed 4 years ago
Linked with GitHub

211110 회의록

PanGesture로 스케일이랑 각도조절하기

단순히 UseCase가 변화량만을 가지고 하는것은 불가능하고 또 이상함
UseCase는 값을 받아서 넣어주기만해야한다. 어떤 특정 이벤트로 어떤 특정값이 들어오게 하는것보단 일반적인 값이들어오게 하는것이 맞다.


    var scale: CGFloat = 0
    var savedScale: CGFloat = 0.5
    var deltaAngle: Float = 0
    var initialDistance: CGFloat = 0
    var initialAngle: CGFloat = 0

    func componentControlDidRotateAndScale(_ componentControl: ComponentControl, with gesture: UIGestureRecognizer) {
        let touchLocation = gesture.location(in: self.view)
        let center = self.testLabel.center

        let xDifference = (center.x - touchLocation.x)
        let yDifference = (center.y - touchLocation.y)
        let distance = sqrt(xDifference * xDifference + yDifference * yDifference)
        let angle = atan2f(Float(touchLocation.y - center.y), Float(touchLocation.x - center.x))

        switch gesture.state {
        case .began:
            self.deltaAngle = angle - atan2f(Float(self.testLabel.transform.b), Float(self.testLabel.transform.a))
            self.initialDistance = distance
        case .changed:
            let angleDiff = Float(self.deltaAngle) - angle
            scale = distance / self.initialDistance
            scale *= savedScale
            
            // viewModel.changeSelectedSclae(scale)
            // viewModel.changeSelectedRotation(angle) -> usecase에서 실제 컴포넌트에 적용 -> 타고타고내려와서 bind걸린곳에서 실제처리

//            var transform = CGAffineTransform.identity
//            transform = transform.rotated(by: CGFloat(-angleDiff))
//            transform = transform.scaledBy(x: scale, y: scale)
//            self.testLabel.transform = transform
//            control.transform = testLabel.transform
//            control.layer.borderWidth = 2 / scale
        case .ended:
            savedScale = scale
        default:
            break
        }
    }

업다운게임에서 테스트한 코드

데모시나리오

깐부 연결
연결되면 편집화면
사진 편집해서 올리기
*
올라온 사진 선택해서 옮기거나 각도조절, 인덱스 조절 가능

Select a repo