Как мне заставить CGAffineTransformMakeScale уменьшить вид вокруг его центра?

Это должно быть легко — когда я использую CGAffineTransformMakeScale на UIView с width = 0.5 и height = 0.5, он сжимается в верхний левый угол. Мне нужно, чтобы он сжимался вокруг своего центра.

Как я могу этого добиться?


person Elon    schedule 03.05.2010    source источник


Ответы (3)


Обязательно отключите Autolayout, если вы столкнулись с таким же поведением!

person Qot    schedule 03.03.2013

Ага, с этим разобрался. Я рисовал на заказ и перепутал рамки и границы.

person Elon    schedule 04.05.2010
comment
Привет, не могли бы вы расширить свой ответ / вопрос? Этот вопрос высоко оценивается в Google. Весь мир смотрит ;) - person jamesh; 02.06.2010
comment
просто сохраните центр, прежде чем устанавливать новое преобразование, а затем верните этот центр обратно, как только закончите. - person Sahil; 03.06.2013

По умолчанию CGAffineTransformMakeScale будет масштабировать UIView относительно их центра.

Например:

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationCurveEaseInOut animations:^{
    self.myView.transform = CGAffineTransformMakeScale(2, 2);
}  completion:nil ]; 

.. увеличит размер myView в два раза, масштабируя его вокруг центра.

person Ben Clayton    schedule 15.03.2013