Базовая информация о версии анимации
Содержание:
OS X v10.6
Новые классы и свойства
Было много новых классов, добавленных в OS X v10.6:
CAEmitterLayer
CAEmitterLayer
класс обеспечивает систему эмиттера частицы для Базовой Анимации. Частицы определяются экземплярамиCAEmitterCell
.CAEmitterCell
CAEmitterCell
класс представляет один источник частиц, испускаемых в aCAEmitterLayer
. Эмиттерная ячейка определяет направление, в котором они испускают и свойства испускаемых частиц. Эмиттерные ячейки могут иметь массив подъячеек, позволяющий самим частицам испустить частицы.CAGradientLayer
CAGradientLayer
класс рисует цветовой градиент по своему цвету фона, заполняя форму уровня (включая скругленные углы).CAReplicatorLayer
CAReplicatorLayer
класс создает конкретное количество копий его подуровней (исходный слой), каждая копия, потенциально имеющая геометрические, временные и преобразования цвета, применилась к нему.CAShapeLayer
CAShapeLayer
класс рисует кубический Сплайн Безье в своем координатном пространстве. Форма составляется между содержанием уровня и его первым подуровнем.CATransformLayer
CATransformLayer
объекты используются для создания истинных 3D иерархий слоев, а не сглаженной модели рендеринга иерархии, используемой другими классами CALayer..CAValueFunction
CAValueFunction
класс обеспечивает более гибкие средние значения применения функций к значениям свойств во время анимации. Функция значения определяет дополнительную трансформацию, применяющуюся к интерполированному значению, прежде чем это будет установлено на уровне представления.
Новые свойства и методы
Дополнительные возможности были добавлены к следующим классам:
-
Теперь только синтезирует методы доступа свойства для отмеченных свойств
@dynamic
в их реализации класса. Для назад совместимости мы сохраняем предыдущее поведение для исполнимых программ, соединенных на версиях ОС до 10,6.Новые свойства слоя: точки привязки, contentsCenter, geometryFlipped, minificationFilterBias
Новые методы уровня:-contentsAreFlipped,-needsDisplay,-displayIfNeeded,-needsLayout, +needsDisplayForKey,-animationKeys
Новый метод делегата уровня:-layoutSublayersOfLayer:
Новый фильтр минификации:
kCAFilterTrilinear
. Включает более высокому качеству субдискретизацию OpenGL изображений. Требует, чтобы добавочная стоимость субдискретизации изображения для создания множественного отображения расположила в виде пирамиды каждый раз изменения образа. Некоторые видеокарты только поддерживают это для изображений с двухмерным питанием.Теперь возможно анимировать Ваши собственные свойства. Посмотрите Анимацию Ваших Собственных Свойств для получения дополнительной информации.
-
Новые свойства:
sourceName
,offset
,scale
,sourceAttribute
, иsourceName
.
CATransaction
Добавленный
lock
иunlock
методы для управления атомарностью свойстваДобавленные средства доступа метода для существующего
disableActions
иanimationDuration
Свойства KVCДобавленные новые свойства KVC и средства доступа метода:
animationTimingFunction
,completionBlock
-
Новая константа,
kCAMediaTimingFunctionDefault
, определяет константу, используемую по умолчанию для свойств.
-
Новое свойство:
valueFunction
.
-
Когда рендеринг размещает единственный плиточный слой рядом
drawInContext:
метод может теперь быть вызван на многократные потоки одновременно. (Это всегда было задокументированным поведением, но OS X v10.5 ограничил каждый экземпляр уровня тем, чтобы быть вызванным на единственном потоке в любом моменте времени.)
-
fontSize
иsetForegroundColor:
свойства теперь animatable. Неявные анимации включены для этих свойств, но только для приложений, соединенных на OS X v10.6 или позже.Трехлинейная фильтрация (с конфигурируемым смещением фильтра) также поддерживается для плиточных слоев. Однако, выбор уровня детализации в настоящее время на многоугольник, а не на пиксель.
-
Предоставленный
CGLContextObj
теперь сохраняется для времени жизниCARenderer
экземпляр.
-
Этот класс может теперь вызвать метод получения подкласса с OpenGL, контекстно-зависимым к ненулевому объекту кадрового буфера. Это означает, что код OpenGL, использующий объекты кадрового буфера для внеэкранного рендеринга, должен всегда сохранять и восстанавливать начальную привязку кадрового буфера.
Связанный с этими изменениями, подклассы больше не требуются, чтобы сбрасывать контекст OpenGL после рендеринга,
CAOpenGLLayer
делает это. Однако, для обеспечения назад совместимости OS X v10.5 подклассам рекомендуют вызвать базовое внедрениеdrawInCGLContext:pixelFormat:forLayerTime:displayTime:
метод после рендеринга, например:- (void)drawInCGLContext:(CGLContextObj)ctx pixelFormat:(CGLPixelFormatObj)pf
forLayerTime:(CFTimeInterval)t displayTime:(const CVTimeStamp *)ts
{
// rendering code…
// ensure context is flushed if required
[super drawInCGLContext:ctx pixelFormat:pf forLayerTime:t displayTime:ts];
}
Изменения средства рендеринга
Ограничения на размер изображений уровня были удалены. (В OS X v10.5 изображения тихо проигнорированы, когда они больше, чем максимальный размер текстуры текущей видеокарты.)
Одноуровневые уровни, пересекающиеся в 3D пространстве, теперь представляются правильно — пересекающиеся уровни разрешены в многократные фрагменты непересечения прежде чем быть представленным (т.е. составление композита, и фоновые фильтры будут применены в правильном порядке.)
Анимация собственных свойств
Анимация пользовательских свойств слоя теперь поддерживается. Переопределение needsDisplayForKey:
: отметить свойства Ваше использование подкласса уровня для рисования его содержания. Анимации, предназначающиеся для тех свойств, тогда вызовут Ваш drawInContext:
метод, который вызовут на копии уровня, содержащего значения текущей анимации.
Семя WWDC 2007 года
Осуждаемый API
CAMediaTiming
постоянный kCAFillModeFrozen
был осужден и заменен kCAFillModeForwards
. Посмотрите Новый API для получения дополнительной информации.
Новый API
Новый API был добавлен к нескольким Базовым классам Анимации.
Новые методы получателя
Базовая Анимация API теперь использует is
Образец средства доступа свойства для булево свойств. Затронутые классы и новые методы get:
CAAnimation
isRemovedOnCompletion
isAdditive
isCumulative
CIFilterAdditions
isEnabled
CALayer
isHidden
isDoubleSided
isOpaque
CAOpenGLLayer
isAsynchronous
CATextLayer
isWrapped
Класс CAMediaTiming
Следующий API был добавлен к CAMediaTiming
:
@protocol CAMediaTiming |
/* Deprecate kCAFillModeFrozen. Replace with: */ |
CA_EXTERN NSString * const kCAFillModeForwards; |
CA_EXTERN NSString * const kCAFillModeBackwards; |
CA_EXTERN NSString * const kCAFillModeBoth; |
/* `forwards' is equivalent to existing `frozen', `backwards' clamps time |
* values before zero to zero, `both' clamps time values at both ends |
* of the object's time space. */ |
@end |
CAKeyframeAnimation
Следующий API был добавлен к CAKeyframeAnimation
:
@interface CAKeyframeAnimation |
/* Defines whether objects animating along paths rotate to match the |
* path tangent. Possible values are `auto' and `autoReverse'. Defaults |
* to nil. The effect of setting this property to a non-nil value when |
* no path object is supplied is undefined. `autoReverse' rotates to |
* match the tangent plus 180 degrees. */ |
@property(copy) NSString *rotationMode; |
CA_EXTERN NSString * const kCAAnimationRotateAuto; |
CA_EXTERN NSString * const kCAAnimationRotateAutoReverse; |
@end |
CATiledLayer
Следующий новый API был добавлен к CATiledLayer
:
@interface CATiledLayer |
/* The time in seconds that newly added images take to "fade-in" to the |
* rendered representation of the tiled layer. The default implementation |
* returns 0.25 seconds. */ |
+ (CFTimeInterval)fadeDuration; |
@end |
CALayer
Следующий новый API был добавлен к CALayer
:
@interface CALayer |
/* Returns a copy of the layer containing all properties as they were |
* at the start of the current transaction, with any active animations |
* applied. This gives a close approximation to the version of the layer |
* that is currently displayed. |
* |
* The effect of attempting to modify the returned layer in any way is |
* undefined. |
* |
* The `sublayers', `mask' and `superlayer' properties of the returned |
* layer return the presentation versions of these properties. This |
* carries through to read-only layer methods. E.g., calling -hitTest: |
* on the result of the -presentationLayer will query the presentation |
* values of the layer tree. */ |
- (id)presentationLayer; |
/* When called on the result of the -presentationLayer method, returns |
* the underlying layer with the current model values. The result of |
* calling this method after the transaction that produced the |
* presentation layer has completed is undefined. */ |
- (id)modelLayer; |
/* This initializer is used to create shadow copies of layers, e.g. |
* for the -presentationLayer method. Subclasses can optionally copy |
* their instance variables into the new object. Subclasses should |
* always invoke the superclass implementation; calling this method in |
* any other situations will produce undefined behavior. */ |
- (id)initWithLayer:(id)layer; |
/* Returns the animation added to the layer with identifier 'key', or nil |
* if no such animation exists. Attempting to modify any properties of |
* the returned object will result in undefined behavior. */ |
- (CAAnimation *)animationForKey:(NSString *)key; |
/* A rectangle in the unit coordinate space defining the subrectangle |
* of the `contents' property that will be drawn into the layer. If |
* pixels outside the unit rectangles are requested, the edge pixels of |
* the contents image will be extended outwards. If an empty rectangle |
* is provided, the results are undefined. Defaults to the unit |
* rectangle [0 0 1 1]. Animatable. */ |
@property CGRect contentsRect; |
/* A bitmask defining how the edges of the layer are rasterized. For |
* each of the four edges (left, right, bottom, top) if the |
* corresponding bit is set the edge will be antialiased. Typically |
* this property is used to disable antialiasing for edges that abut |
* edges of other layers, to eliminate the seams that would otherwise |
* occur. The default value is for all edges to be antialiased. */ |
enum CAEdgeAntialiasingMask |
{ |
kCALayerLeftEdge = 1U << 0, |
kCALayerRightEdge = 1U << 1, |
kCALayerBottomEdge = 1U << 2, |
kCALayerTopEdge = 1U << 3, |
}; |
@property unsigned int edgeAntialiasingMask; |
/** Layer `contentsGravity' values. **/ |
/* Similar to kCAGravityResizeAspect except that it resizes the contents |
* of the layer to fill the bounds (while preserving its aspect ratio.) */ |
CA_EXTERN NSString * const kCAGravityResizeAspectFill; |
@end |
Семя в марте
Базовая анимация переименование API
В OS X выпуск 365 V10.5 и позже Базовая Анимация API подвергся значительному переименованию. Более ранний API будет сохраняться временно для совместимости; это будет удалено в будущем семени. Необходимо обновить проекты использовать новые имена API, прежде чем будет выпущен Leopard.
Таблица 1-1 детализирует отображение старого класса и имен протокола к новой схеме именования.
Исходное Имя Класса/Протокола |
Новое Имя Класса/Протокола |
---|---|
LKAction |
CAAction |
LKAnimation |
CAAnimation |
LKAnimationGroup |
CAAnimationGroup |
LKBasicAnimation |
CABasicAnimation |
LKConstraint |
CAConstraint |
LKConstraintLayoutManager |
CAConstraintLayoutManager |
LKConstraintManager |
CAConstraintManager |
LKKeyframeAnimation |
CAKeyframeAnimation |
LKLayer |
CALayer |
LKLayoutManager |
CALayoutManager |
LKOpenGLLayer |
CAOpenGLLayer |
LKPropertyAnimation |
CAPropertyAnimation |
LKScrollLayer |
CAScrollLayer |
LKTextLayer |
CATextLayer |
LKTiledLayer |
CATiledLayer |
LKTiming |
CAMediaTiming |
LKTimingFunction |
CAMediaTimingFunction |
LKTransaction |
CATransaction |
LKTransition |
CATransition |
LKObject
протокол был осужден. Представленные методы были теперь непосредственно добавлены к CAAnimation
и CALayer
классы. Расширения кодирования значения ключа, задокументированные в LKObject
ссылка была временно добавлена к Базовому Руководству по программированию Анимации.
LKTransform
stuct был переименован CATransform3D
. Связанное LKTransform*
функции были переименованы соответственно.
LKCurrentAbsoluteTime()
функция была переименована CACurrentMediaTime()
.
Константы представили использование префикса kLK*
были все переименованы kCA*
.
Новые классы и свойства
Два новых класса были добавлены к Базовой Анимации: CATiledLayer
и CARenderer
. CATiledLayer
класс позволяет Вам обеспечивать содержание инкрементно. CARenderer
класс позволяет Вам представлять анимацию в Ядре контекст OpenGL непосредственно.
Несколько новых свойств были добавлены к CALayer
класс. minification
и magnification
свойства позволяют Вам указывать фильтр для использования при масштабировании содержания уровня. anchorPoint
свойство позволяет Вам указывать расположение в уровне, вокруг которого применяются преобразования.
Copyright © 2015 Apple Inc Все права защищены. Условия использования | Политика конфиденциальности | обновленный: 01.06.2009