2011-12-31 3 views
0

У меня есть UIView, в котором я рисую много фигур. Я просто хочу перерисовать это представление, чтобы сделать анимацию. Я искал варианты анимации, но все анимации выглядят так, как будто они работают только со свойствами, такими как transform, alpha ... Мне просто нужна опция timed animation, и это не блокирует экран, я имею в виду, что позволяет приложению реализовать экран был использован. Является ли это возможным?Форма анимации в iOS

+0

Не могли бы вы объяснить немного больше о характере ваших анимаций? Это похоже на фрейм-анимацию, то есть, как мультфильм? Или он должен анимировать рисунок векторных форм, то есть, как кто-то волшебным образом рисует эти фигуры медленно на экране? Или еще ..? – Till

+0

Формы - это простые геометрические фигуры, нарисованные с использованием кварца, как прямоугольники. После некоторой обработки они могут изменять цвет/положение. Я просто хочу продолжать делать эту обработку и изменять эти фигуры. –

ответ

1

Это совершенно возможно, и у вас есть несколько способов, которыми вы можете заниматься. Если вы хотите простой анимации PNG стиль последовательности вы можете просто заполнить UIImageView, как это:

imageView.animationImages = myImages; 
imageView.animationDuration = 3; 
[imageView startAnimating]; 

или вы можете переопределить функцию DrawRect в пользовательской UIView, создать NSTimer тикать однако часто вы хотите изменить анимация и вызов setNeedsDisplay в представлении для рисования следующего кадра.

+0

На самом деле я рисую фигуры с помощью кварца, и я хочу анимировать эти фигуры, изменяя цвета/положение после некоторой обработки. –

+0

Core Animation - определенно другой способ пойти. Я не использовал анимацию формы CAShapeLayer, как упоминалось в другом ответе, но это, вероятно, лучший способ. Я использовал Core Animation для анимации 2-го и 3-го переводов, ротации и масштабирования, и это очень мощное и настраиваемое решение. – zot

1

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

Имейте один CAShapeLayer для каждой фигуры и добавляйте их в качестве подслоев к слою вашего основного вида.

Чтобы использовать его, вам необходимо добавить среду QuartzCore, но это очень просто, и есть много учебников.

+0

Должен ли я иметь один CAShapeLayer для каждой фигуры, которую я хочу сделать? –

+0

Да, каждый имеет только один путь, а также таким образом вы можете перемещать/перекрасить их по отдельности. – jrturton

Смежные вопросы