У меня есть настройка прокрутки, которая содержит изображение.Этот вид прокрутки обрабатывает мое масштабирование и прокрутку.
Я читаю текущий курс пользователя с датчиков устройства и соответственно поворачиваю изображение.
Проблема, с которой я столкнулся, пытается сохранить "Преобразование «единый источник правды».
Если изображение уже было сжато / увеличено, а затем я применил вращение, оно работает нормально.Вот как я это делаю.
// 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.
Как сохранить все великолепные функции масштабирования и прокруткипрокрутки и применить желаемое вращение к содержимому прокрутки, не сбрасывая ничего?