Как выполнить несколько операций CGAffineTransform (в анимационных блоках), не отслеживая каждую выполненную операцию?
Операция перевода не принимает координаты x, y, а вместо этого значения для смещения.Так что, если вы не знаете, куда вы переводите в данный момент, скажем, в «местоположение 2», как вы узнаете, на какие значения нужно перейти, чтобы попасть в «местоположение 3»
Например:
Кадр UIView находится в (0, 0) - Положение 1. Я установил преобразование, чтобы перевести в (768, 0) и повернуть на -90 градусов - Положение 2. Некоторое время проходит, и теперь я хочу перейти к (768, 1024)и повернуть еще на -90 градусов - Позиция 3.
Как узнать, что нужно перевести, чтобы перейти из Позиции 2 в Позицию 3?
В контексте я пытаюсь достичь iPadсмотрите следующим образом:
- UIView, который занимает весь экран
- UIToolbar, который занимает верхний край и находится над UIView
- , когдаiPad вращается, UIView остается с устройством, но панель инструментов будет вращаться так, чтобы она всегда находилась на верхнем краю экрана.
Я использую CGAffineTransform translate и вращаюсь для перемещения панели инструментов.Прекрасно работает, за исключением случаев, когда я поворачиваю iPad несколько раз.Первый перевод / вращение будет работать отлично.Следующие преобразования будут отключены, потому что я не знаю правильных значений для сдвига.
ОБНОВЛЕНИЕ:
Похоже, я беру текущий перевод (tx, ty) значения в структуре UIView.transform и использовать разницу между ними и новым местоположением, это работает.Однако, если представление было повернуто, это не работает.Значения tx и ty можно перевернуть из-за предыдущего поворота.Я не уверен, как с этим справиться.
ОБНОВЛЕНИЕ 2:
Проведя некоторые исследования, я обнаружил, что могу получить оригинальные, неповращенные точки из tx, получая значение abs точек и, возможно, меняя местами x и y, если UIView перпендикулярен.Теперь я пытаюсь понять, как правильно применить следующий набор преобразований в правильном порядке.Кажется, независимо от того, как я их согласовываю, UIView оказывается в неправильном месте.Просто кажется, что это слишком сложно и должен быть более легкий путь.