Анимированный размер UIView вокруг центральной точки - PullRequest
8 голосов
/ 21 июня 2011

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

Это код, который у меня есть на данный момент:

[UIView animateWithDuration:1 animations:^(void) {
    [view setFrame:CGRectMake(-10, 0, 320, view.frame.size.height)];
}];

Я не думал, что это будет трудно сделать, но, похоже, так оно и есть. Если не считать анимацию вручную с помощью таймера, я понятия не имею, как заставить его расширяться из центра.

Ответы [ 3 ]

9 голосов
/ 21 июня 2011

Я не совсем уверен, почему это работает для вас странным образом. Вы каким-либо образом изменили свойство anchorPoint? В противном случае оно должно расти из центра.

Делает ли

CGRect newFrame;
newFrame = CGRectInset(view.frame, -10, -30);

[UIView animateWithDuration:1 animations:^(void) {
    view.frame = newFrame;
}];

также дать вам тот же результат? Как насчет этого?

[UIView animateWithDuration:1 animations:^(void) {
    view.transform = CGAffineTransformScale(view.transform, 1.1, 1.1);
}];
0 голосов
/ 24 июля 2014

Просто сместите позицию X, Y вида. Допустим, вы уменьшили ширину и высоту рамки на 20 пунктов: затем вы должны ДОБАВИТЬ 10 ​​точек к обеим позициям X и Y.

0 голосов
/ 26 декабря 2013

Попробуйте код, предоставленный @Deepak Danduprolu, а также не забудьте снять флажок «Использовать автоматическую разметку» в окне инспектора файлов показа раскадровки. У меня это работает.

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