Масштабирование UIView по горизонтали - PullRequest
2 голосов
/ 16 февраля 2012

Я пытаюсь масштабировать вид по горизонтали, но я не получаю ожидаемых результатов.

view.bounds = CGRectMake(view.bounds.origin.x, view.bounds.origin.y , view.bounds.size.width * scaleX, view.bounds.size.height );
view.center = CGPointMake(view.bounds.origin.x, view.center.y);

Как вы можете видеть в приведенном выше коде, я хочу масштабировать вид только с правой стороны. Вот почему я изменил центр обзора.

Проблема в том, что изображение по-прежнему масштабируется в обе стороны! Я сделал ту же логику, чтобы масштабировать другой UIView по вертикали и получил ожидаемый результат.

Ответы [ 3 ]

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

Только что обнаружена проблема.

при установке certer новая точка должна быть относительно рамки, а не границ.Итак, я получаю код:

view.center = CGPointMake(-view.frame.origin.x, view.center.y);

Надеюсь, это кому-нибудь поможет ..

Спасибо за помощь

1 голос
/ 16 февраля 2012

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

Это должно работать:

view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width * scaleX, view.frame.size.height);

Вам не нужно настраивать исходную / центральную точку для масштабирования только вправо.

0 голосов
/ 16 февраля 2012

Попробуйте вместо этого использовать аффинное преобразование:

view.transform = CGAffineTransformMakeScale(scaleX, 1)

И затем установить центр.

...