Как я могу использовать преобразование масштаба UIScrollView с преобразованием вращения из другого места, где - PullRequest
0 голосов
/ 23 марта 2019

У меня есть настройка прокрутки, которая содержит изображение.Этот вид прокрутки обрабатывает мое масштабирование и прокрутку.

Я читаю текущий курс пользователя с датчиков устройства и соответственно поворачиваю изображение.

Проблема, с которой я столкнулся, пытается сохранить "Преобразование «единый источник правды».

Если изображение уже было сжато / увеличено, а затем я применил вращение, оно работает нормально.Вот как я это делаю.

// Keep track of values I want
struct ImageTrasform {
    var rotate: CGFloat = 0.0
    var scale: CGFloat = 1.0
}
// store the last zoom
func scrollViewDidZoom(_ scrollView: UIScrollView) {
    viewModel.transform.scale = scrollView.zoomScale
}


// Update scale value when zooming
    func updateTransform() {
        UIView.animate(withDuration: 0.5, animations: {
            let ts = CGAffineTransform(scaleX: self.viewModel.transform.scale, y: self.viewModel.transform.scale)
            let t1 = CGAffineTransform(rotationAngle: self.viewModel.transform.rotate)
            let t = ts.concatenating(t1)
            self.imageView.transform = t
        })
    }

// Rotate to Users Heading
private func updateRotation(angle: CGFloat)
{
viewModel.transform.rotate = angle
        updateTransform()
}

Проблема, с которой я столкнулся, заключается в том, что при любых последующих попытках масштабирования преобразование поворота сбрасывается до 0.

Как сохранить все великолепные функции масштабирования и прокруткипрокрутки и применить желаемое вращение к содержимому прокрутки, не сбрасывая ничего?

...