2013-04-16 3 views
1

я поворот изображения на значение слайдера -Поворот изображения на Slider Value в прошивкой

Я использую этот код для вращения -

editingView.transform = CGAffineTransformRotate(editingView.transform,sliderVal); 

его Вращающийся правильно, но если я пытаюсь переместить или изменить размер после поворота Редактор редактирования изменяет размер с неожиданным поведением, и вид исчезает с экрана.

Пожалуйста, предложите мне, что я делаю неправильно.

ответ

0

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

  • Найдите координату, если вид, который вы хотите повернуть относительно своего супервизора, скажите его (x, y).
  • Перевести вид на источник как;

    view.transform = CGAffineTransformMakeTranslation (х, у)

  • Поворот вид на некоторый угол, скажем, П. И.,

    view.transform = CGAffineTransformMakeRotation (ПИ)

  • После поворота перевести обратно к исходной точке;

    view.transform = CGAffineTransformMakeTranslation (-x, -y)

И это все. Он должен работать со всем разным вращением.

+0

это решает мою проблему после поворота изменять размер и перемещать, но его остановить вращение , просто мерцающий вид. – San007

0

Посмотрите на this question.

Поскольку вы не показываете какой-либо код о том, как вы выполняете перемещение или изменение размера, я подозреваю, что вы не правильно объединяете преобразования. Кроме того, после того, как вы сделали поворот, возможно, перевод будет работать на повернутой системе координат, что приведет к неожиданному поведению.

0

Изменение значения transform, влияющего на стоимость UIView. frame. Как Apple, говорит:

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

Apple docs

Так что, если вы двигаетесь или изменения размера вида с помощью кадра свойства, попробуйте сделать это с bounds, center свойства