вращать UIView / UITableView вокруг точки - PullRequest
1 голос
/ 02 февраля 2012

Я пытаюсь повернуть UITableView вокруг точки, я использую этот IBAction, который работает только для половины

CALayer *l = self.table.layer;
l.anchorPoint = CGPointMake(0,0);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
CGAffineTransform rotate = CGAffineTransformMakeRotation(0.6);
table.transform = rotate;
[UIView commitAnimations];

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

    CALayer *l = self.table.layer;
l.anchorPoint = CGPointMake(0,0);

в viewdidload, когда я открываю приложение, представление таблицы находится в другой позиции, но анимация правильная, кажется, что l.anchorPoint переместить таблицу в другую позицию ... где ошибка?

1 Ответ

2 голосов
/ 02 февраля 2012

Возможно, проблема с l.anchor.

Метод setAnchor устанавливает точку centre frame в слое. Вы установили центральную точку в верхнем левом углу (0,0). (1,1) будет справа внизу.

Слой позиционирует себя, используя свойство centre. Это представляет координаты в суперслое. Поскольку вы изменили опорную точку, ваш слой будет смещен, поскольку свойство center теперь ссылается на верхний левый угол, но с такими же координатами подслоя.

Если вы установите якорь на (1,1), вы заметите, что нижний правый угол теперь будет там, где был верхний левый угол.

Чтобы решить вашу проблему, установите опорную точку и измените положение слоя, установив свойство centre.

l.center = CGPoint (l.center.x - (l.frame.size.width/2), l.center.y - (l.frame.size.height/2);

Приведенный выше код должен помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...