Я хочу анимировать представление, центрируя одну из ее точек до центра экрана, а затем масштабируйте ее.Перевести и масштабировать UIView в Objective-C
Так что, если у меня есть этот экран (S
) с целью (V
) в нем, и в определенный момент (x
):
+-------------+
|S-----------+|
||V ||
|| ||
|| ||
|| ||
|| ||
|| x ||
|| ||
|+-----------+|
+-------------+
Я хочу это анимировать эту позицию:
+-----------+
+---V---------+|
|S | ||
| | ||
| | ||
| | ||
| | x ||
| | ||
| +----------|+
| |
| |
+-------------+
где точка находится в центре экрана, а затем масштабировать его так:
+-------------------+
|V |
| |
| |
| |
|+-------------+ |
||S | |
|| | |
|| | |
|| | |
|| x | |
|| | |
|| | |
|| | |
|| | |
|+-------------+ |
+-------------------+
Тем не менее, я не могу этого сделать, даже используя CGAffineTransformConcat
, который, однако, предназначен именно для таких случаев.
Я попытался это:
CGAffineTransform translateTransform = CGAffineTransformMakeTranslation(deltaPoint.x, deltaPoint.y);
CGAffineTransform scaleTransform = CGEqualAffineTransformMakeScale(40);
self.screenView.transform = CGAffineTransformConcat(translateTransform, scaleTransform);
, где deltaPoint
является CGPoint
, имеющим это x
и y
равно расстоянию между абсолютными координатами точки в (по отношению к экрану) и координатой центра экрана , но он слегка приближает точку вправо.
Я также попытался вычисления deltaPoint
после масштабирования без толку:
self.screenView.transform = CGEqualAffineTransformMakeScale(40);
// calculate deltaPoint
self.screenView.transform = CGAffineTransformTranslate(self.screenView.transform, deltaPoint.x, deltaPoint.y);
В обоих случаях, если я закомментировать масштабное преобразование, перевод работы, он двигался он совершенно центр, поэтому проблема ISN» т в расчете deltaPoint
.
@Eiko, я обновил вопрос. –
Вы пробовали конкат с отменой заказа? – Eiko
@ Эйко, да, но это все еще не работает. –