6.0.1

This is a bazel compatibility release.

Source changes

Non-source changes

6.0.0

Breaking changes

New features

Timeline

Timeline and TimelineScrubber provide an API for controlling time-based animations using arbitrary inputs.

let timeline = Timeline()

// While a scrubber is attached, all animations associated with the timeline are expected to be
// paused.
timeline.scrubber = TimelineScrubber()

// Changing the scrubber's timeOffset is expected to propagate to all associated animations.
timeline.scrubber?.timeOffset = 0.3

ConsoleLoggingTracer

Plan values are now dumped to the console. Example output:

didAddPlan to target: <CALayer: 0x60800022ce80>
Plan: MDMTween
  let keyPath: NSString = transform.rotation.z
  let duration: @ = 0.15
  let delay: @ = 0
  let values: NSArray = (
    0,
    "3.141592653589793"
)
  let keyPositions: NSArray = (null)
  let timingFunctions: NSArray = (null)
  let timeline: MDMTimeline = <MDMTimeline: 0x600000223240>

Source changes

API changes

Auto-generated by running:

apidiff origin/stable release-candidate objc src/MaterialMotionRuntime.h

MDMTimelineScrubber

new property: timeOffset in MDMTimelineScrubber

new class: MDMTimelineScrubber

MDMTimelineObserving

new method: -timeline:didDetachScrubber: in MDMTimelineObserving

new protocol: MDMTimelineObserving

new method: -timeline:didAttachScrubber: in MDMTimelineObserving

new method: -timeline:scrubberDidScrub: in MDMTimelineObserving

MDMPlanPerforming

removed protocol: MDMPlanPerforming

removed method: -addPlan: in MDMPlanPerforming

MDMTimeline

new method: -begin in MDMTimeline

new property: beginTime in MDMTimeline

new property: scrubber in MDMTimeline

new method: -addTimelineObserver: in MDMTimeline

new class: MDMTimeline

new method: -removeTimelineObserver: in MDMTimeline

Non-source changes

5.0.0

Breaking changes

New deprecations

New features

Source changes

API changes

Auto-generated by running:

apidiff 4a51daf421c2d84b6587bb7fd1953f03307c5f7d cbe1b22c28b5d4f02898e22ff74f9d5b79dbde1f objc src/MaterialMotionRuntime.h

MDMSchedulerActivityStateIdle

new constant: MDMSchedulerActivityStateIdle

MDMSchedulerActivityState

removed enum: MDMSchedulerActivityState

removed enum value: MDMSchedulerActivityStateIdle in MDMSchedulerActivityState

removed enum value: MDMSchedulerActivityStateActive in MDMSchedulerActivityState

modified typedef: MDMSchedulerActivityState

Type of change: declaration
From: typedef enum MDMSchedulerActivityState MDMSchedulerActivityState
To: typedef MDMRuntimeActivityState MDMSchedulerActivityState

MDMSchedulerDelegate

modified protocol: MDMSchedulerDelegate

Type of change: swift declaration
From: protocol SchedulerDelegate : NSObjectProtocol
To: protocol SchedulerDelegate : RuntimeDelegate

modified protocol: MDMSchedulerDelegate

Type of change: declaration
From: @protocol MDMSchedulerDelegate <NSObject>
To: @protocol MDMSchedulerDelegate <MDMRuntimeDelegate>

MDMConsoleLoggingTracer

new class: MDMConsoleLoggingTracer

MDMRuntimeFeatures

new method: -removeTracer: in MDMRuntimeFeatures

new method: -tracers in MDMRuntimeFeatures

new method: -addPlan:named:to: in MDMRuntimeFeatures

new protocol: MDMRuntimeFeatures

new method: -removePlanNamed:from: in MDMRuntimeFeatures

new method: -addPlan:to: in MDMRuntimeFeatures

new method: -addTracer: in MDMRuntimeFeatures

new property: activityState in MDMRuntimeFeatures

MDMPerforming

new method: -addPlan: in MDMPerforming

MDMComposablePerforming

removed method: -setTransactionEmitter: in MDMComposablePerforming

modified method: -setPlanEmitter: in MDMComposablePerforming

Type of change: swift declaration
From: optional func setPlanEmitter(_ planEmitter: PlanEmitting)
To: func setPlanEmitter(_ planEmitter: PlanEmitting)

MDMTransaction

removed method: -addPlan:toTarget: in MDMTransaction

removed class: MDMTransaction

MDMScheduler

modified class: MDMScheduler

Type of change: swift declaration
From: class Scheduler : NSObject
To: class Scheduler : Runtime

modified class: MDMScheduler

Type of change: declaration
From: @interface MDMScheduler : NSObject
To: @interface MDMScheduler : MDMRuntime

MDMTransactionEmitting

removed method: -emitTransaction: in MDMTransactionEmitting

removed protocol: MDMTransactionEmitting

MDMTracing

new method: -didRemovePlanNamed:from: in MDMTracing

new method: -didAddPlan:named:to: in MDMTracing

MDMRuntimeActivityState

new enum value: MDMRuntimeActivityStateActive in MDMRuntimeActivityState

new enum value: MDMRuntimeActivityStateIdle in MDMRuntimeActivityState

new typedef: MDMRuntimeActivityState

new enum: MDMRuntimeActivityState

MDMRuntimeDelegate

new method: -runtimeActivityStateDidChange: in MDMRuntimeDelegate

new protocol: MDMRuntimeDelegate

MDMSchedulerActivityStateActive

new constant: MDMSchedulerActivityStateActive

MDMRuntime

new property: delegate in MDMRuntime

new class: MDMRuntime

Non-source changes

4.0.0

Breaking changes

// old
func add(plan: Plan) {

// new
func addPlan(_ plan: Plan) {

New deprecations

New features

Source changes

API changes

Auto-generated by running:

apidiff 2328c60773ecc6bfc94c5ebdb62db4aee3d0f6b7 4a7164b643eb261e9206cc9907f85053df2c42ee apple src/MaterialMotionRuntime.h

MDMScheduler

new method: -addPlan:named:to: in MDMScheduler

new method: -tracers in MDMScheduler

new method: -addPlan:to: in MDMScheduler

new method: -addTracer: in MDMScheduler

new method: -removePlanNamed:from: in MDMScheduler

new method: -removeTracer: in MDMScheduler

new method: -addPlan:toTarget: in MDMScheduler

deprecated method: -commitTransaction: in MDMScheduler. Use addPlan(_:to:) instead.

MDMPlanEmitting

new protocol: MDMPlanEmitting

new method: -emitPlan: in MDMPlanEmitting

MDMDelegatedPerformanceTokenArgBlock

removed typedef: MDMDelegatedPerformanceTokenArgBlock

MDMTracing

new method: -didAddPlan:to: in MDMTracing

new protocol: MDMTracing

new method: -didCreatePerformer:for: in MDMTracing

MDMDelegatedPerformanceTokenReturnBlock

removed typedef: MDMDelegatedPerformanceTokenReturnBlock

MDMTransaction

deprecated method: -addPlan:toTarget: in MDMTransaction. Add plans directly to a scheduler instead.

deprecated class: MDMTransaction. Add plans directly to a scheduler instead.

MDMDelegatedPerformingToken

removed protocol: MDMDelegatedPerformingToken

MDMTransactionEmitting

deprecated method: -emitTransaction: in MDMTransactionEmitting. Use PlanEmitting instead.

deprecated protocol: MDMTransactionEmitting. Use PlanEmitting instead.

MDMNamedPlan

new protocol: MDMNamedPlan

MDMNamedPlanPerforming

new protocol: MDMNamedPlanPerforming

new method: -removePlanNamed: in MDMNamedPlanPerforming

new method: -addPlan:named: in MDMNamedPlanPerforming

MDMComposablePerforming

new method: -setPlanEmitter: in MDMComposablePerforming

deprecated method: -setTransactionEmitter: in MDMComposablePerforming. Use setPlanEmitter instead.

MDMDelegatedPerforming

removed protocol: MDMDelegatedPerforming

removed method: -setDelegatedPerformanceWillStart:didEnd: in MDMDelegatedPerforming

Non-source changes

3.0.1

3.0.0

New features

Breaking changes

Documentation changes

Source changes

API changes

Auto-generated by running:

apidiff 48e376b790250634262cfe2d2770acc87ed68c00 a6541144f4349c1e1a12a076f53801a4a35acc94 apple src/MaterialMotionRuntime.h

MDMComposablePerforming

new protocol: MDMComposablePerforming

new method: -setTransactionEmitter: in MDMComposablePerforming

MDMContinuousPerforming

new method: -setIsActiveTokenGenerator: in MDMContinuousPerforming

new protocol: MDMContinuousPerforming

MDMTransactionEmitting

new method: -emitTransaction: in MDMTransactionEmitting

new protocol: MDMTransactionEmitting

MDMIsActiveTokenGenerating

new protocol: MDMIsActiveTokenGenerating

new method: -generate in MDMIsActiveTokenGenerating

MDMPlan

modified protocol: MDMPlan

Type of change: swift declaration
From: protocol Plan : NSObjectProtocol
To: protocol Plan : NSObjectProtocol, NSCopying

modified protocol: MDMPlan

Type of change: declaration
From: @protocol MDMPlan <NSObject>
To: @protocol MDMPlan <NSObject, NSCopying>

MDMDelegatedPerformingToken

deprecated protocol: MDMDelegatedPerformingToken. Use MDMIsActiveToken instead.

MDMIsActiveTokenable

new protocol: MDMIsActiveTokenable

new method: -terminate in MDMIsActiveTokenable

MDMDelegatedPerforming

removed property: delegatedPerformanceWillStartNamed in MDMDelegatedPerforming

removed property: delegatedPerformanceDidEndNamed in MDMDelegatedPerforming

deprecated protocol: MDMDelegatedPerforming. Use MDMContinuousPerforming instead.

Non-source changes

2.0.1

Bump the podspec and jazzy version numbers that we missed in 2.0.0.

2.0.0

Swift 3 compatibility release.

New features

Delegated performance APIs are now tokenized.

The new tokenized APIs are similar to the old named APIs, but each willStart invocation generates a new unique token. The token must be released with a corresponding didEnd invocation.

Breaking changes

Swift API names have changed and must be updated in your local code. Xcode will generally provide fix-its.

Source changes

API changes

Auto-generated by running:

apidiff 734d43e406f53143c2cf8440f43d858d125f0a11 ac88e627b13663bcbad83ee5dc09638e5464e337 apple src/MaterialMotionRuntime.h

MDMScheduler

modified method: -commitTransaction: in MDMScheduler

Type of change: swift declaration
From: func commit(_ transaction: MDMTransaction)
To: func commit(transaction: MDMTransaction)

modified property: delegate in MDMScheduler

Type of change: swift declaration
From: weak var delegate: MDMSchedulerDelegate? { get set }
To: weak var delegate: SchedulerDelegate? { get set }

modified class: MDMScheduler

Type of change: swift declaration
From: class MDMScheduler : NSObject
To: class Scheduler : NSObject

MDMPlanPerforming

modified method: -addPlan: in MDMPlanPerforming

Type of change: declaration
From: - (void)addPlan:(nullable id<MDMPlan>)plan;
To: - (void)addPlan:(nonnull id<MDMPlan>)plan;

modified protocol: MDMPlanPerforming

Type of change: swift declaration
From: protocol MDMPlanPerforming : MDMPerforming
To: protocol PlanPerforming : Performing

MDMDelegatedPerformanceTokenReturnBlock

new typedef: MDMDelegatedPerformanceTokenReturnBlock

MDMDelegatedPerformanceTokenArgBlock

new typedef: MDMDelegatedPerformanceTokenArgBlock

MDMPlan

modified protocol: MDMPlan

Type of change: swift declaration
From: protocol MDMPlan : NSObjectProtocol
To: protocol Plan : NSObjectProtocol

MDMSchedulerDelegate

modified protocol: MDMSchedulerDelegate

Type of change: swift declaration
From: protocol MDMSchedulerDelegate : NSObjectProtocol
To: protocol SchedulerDelegate : NSObjectProtocol

modified method: -schedulerActivityStateDidChange: in MDMSchedulerDelegate

Type of change: swift declaration
From: func schedulerActivityStateDidChange(_ scheduler: MDMScheduler)
To: func schedulerActivityStateDidChange(_ scheduler: Scheduler)

MDMDelegatedPerformingToken

new protocol: MDMDelegatedPerformingToken

MDMTransaction

modified class: MDMTransaction

Type of change: swift declaration
From: class MDMTransaction : NSObject
To: class Transaction : NSObject

MDMPerforming

modified protocol: MDMPerforming

Type of change: swift declaration
From: protocol MDMPerforming : NSObjectProtocol
To: protocol Performing : NSObjectProtocol

MDMDelegatedPerforming

new method: -setDelegatedPerformanceWillStart:didEnd: in MDMDelegatedPerforming

modified protocol: MDMDelegatedPerforming

Type of change: swift declaration
From: protocol MDMDelegatedPerforming : MDMPerforming
To: protocol DelegatedPerforming : Performing

modified property: delegatedPerformanceWillStartNamed in MDMDelegatedPerforming

Type of change: swift declaration
From: var delegatedPerformanceWillStartNamed: (String) -> Void { get set }
To: optional var delegatedPerformanceWillStartNamed: (String) -> Void { get set }

modified property: delegatedPerformanceWillStartNamed in MDMDelegatedPerforming

Type of change: declaration
From: @property (readwrite, copy, atomic, nonnull) void (^)(NSString *_Nonnull) delegatedPerformanceWillStartNamed;
To: @optional @property (readwrite, copy, nonatomic, nonnull) void (^)(NSString *_Nonnull) delegatedPerformanceWillStartNamed;

modified property: delegatedPerformanceDidEndNamed in MDMDelegatedPerforming

Type of change: swift declaration
From: var delegatedPerformanceDidEndNamed: (String) -> Void { get set }
To: optional var delegatedPerformanceDidEndNamed: (String) -> Void { get set }

modified property: delegatedPerformanceDidEndNamed in MDMDelegatedPerforming

Type of change: declaration
From: @property (readwrite, copy, atomic, nonnull) void (^)(NSString *_Nonnull) delegatedPerformanceDidEndNamed;
To: @optional @property (readwrite, copy, nonatomic, nonnull) void (^)(NSString *_Nonnull) delegatedPerformanceDidEndNamed;

Non-source changes

1.0.0