Сброс происхождения трансформированного UIView спускается в сумасшествие - PullRequest
2 голосов
/ 26 июня 2009

Я вращаю / масштабирую UIVIew, используя [UIView transform:], и это хорошо работает. Однако, как только я изменяю происхождение фрейма представления, содержимое представления начинает «странно» масштабироваться, даже если я не выполняю никаких дальнейших CGAffineTransforms.

Почему это происходит? Как я могу предотвратить это?

Обновление 1:

Документы предполагают, что кадр является недействительным после преобразования. Могу ли я вместо этого переместить вид через его свойство center?

Обновление 2:

Настройка центра представлений позволила мне успешно перевести представление после применения преобразования.

Ответы [ 2 ]

3 голосов
/ 26 июня 2009

Могу ли я переместить вид через его свойство 'center'?

В документации свойство center определяется как:

Центр кадра.

и говорит:

Центр указан в системе координат его суперпредставления.

Я бы попробовал.

1 голос
/ 26 июня 2009

Из UIView документы :

преобразования:

Предупреждение: Если это свойство не является преобразованием идентичности, значение свойство frame не определено и поэтому следует игнорировать.

Свойство center - это просто удобный метод, который действительно сбрасывает источник фрейма.

Редактировать: добавлено для ответа на комментарий:

Если вы используете свойство transform и хотите изменить положение своего представления, вам нужно объединить перевод с вашим преобразованием, используя:

view.transform = CGAffineTransformTranslate(view.transform, tx, tx);
...