From 3e45f41710fe943563a0a51bd3dd3bfb5041b489 Mon Sep 17 00:00:00 2001 From: Erekle Date: Fri, 13 May 2016 18:43:24 +0400 Subject: [PATCH] ASVideoNode property proxy --- AsyncDisplayKit/ASVideoPlayerNode.h | 14 ++++++++ AsyncDisplayKit/ASVideoPlayerNode.mm | 49 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/AsyncDisplayKit/ASVideoPlayerNode.h b/AsyncDisplayKit/ASVideoPlayerNode.h index fcf3c6a2c8..010e31bcb2 100644 --- a/AsyncDisplayKit/ASVideoPlayerNode.h +++ b/AsyncDisplayKit/ASVideoPlayerNode.h @@ -33,6 +33,20 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, assign) BOOL disableControls; +#pragma mark - ASVideoNode property proxy +/** + * When shouldAutoplay is set to true, a video node will play when it has both loaded and entered the "visible" interfaceState. + * If it leaves the visible interfaceState it will pause but will resume once it has returned. + */ +@property (nonatomic, assign, readwrite) BOOL shouldAutoplay; +@property (nonatomic, assign, readwrite) BOOL shouldAutorepeat; +@property (nonatomic, assign, readwrite) BOOL muted; +@property (nonatomic, assign, readonly) ASVideoNodePlayerState playerState; +//! Defaults to 100 +@property (nonatomic, assign) int32_t periodicTimeObserverTimescale; +//! Defaults to AVLayerVideoGravityResizeAspect +@property (atomic) NSString *gravity; + - (instancetype)initWithUrl:(NSURL*)url; - (instancetype)initWithAsset:(AVAsset*)asset; diff --git a/AsyncDisplayKit/ASVideoPlayerNode.mm b/AsyncDisplayKit/ASVideoPlayerNode.mm index c2bc038bb2..e84665c7bc 100644 --- a/AsyncDisplayKit/ASVideoPlayerNode.mm +++ b/AsyncDisplayKit/ASVideoPlayerNode.mm @@ -50,6 +50,12 @@ static void *ASVideoPlayerNodeContext = &ASVideoPlayerNodeContext; CMTime _duration; BOOL _disableControls; + + BOOL _shouldAutoplay; + BOOL _shouldAutorepeat; + BOOL _muted; + int32_t _periodicTimeObserverTimescale; + NSString *_gravity; } @end @@ -535,6 +541,49 @@ static void *ASVideoPlayerNodeContext = &ASVideoPlayerNodeContext; } } +- (void)setShouldAutoplay:(BOOL)shouldAutoplay +{ + _shouldAutoplay = shouldAutoplay; + _videoNode.shouldAutoplay = _shouldAutoplay; +} + +- (void)setShouldAutorepeat:(BOOL)shouldAutorepeat +{ + _shouldAutorepeat = shouldAutorepeat; + _videoNode.shouldAutorepeat = YES; +} + +- (void)setMuted:(BOOL)muted +{ + _muted = muted; + _videoNode.muted = _muted; +} + +- (void)setPeriodicTimeObserverTimescale:(int32_t)periodicTimeObserverTimescale +{ + _periodicTimeObserverTimescale = periodicTimeObserverTimescale; + _videoNode.periodicTimeObserverTimescale = _periodicTimeObserverTimescale; +} + +- (NSString*)gravity +{ + if (_gravity == nil) { + _gravity = _videoNode.gravity; + } + return _gravity; +} + +- (void)setGravity:(NSString *)gravity +{ + _gravity = gravity; + _videoNode.gravity = _gravity; +} + +- (ASVideoNodePlayerState)playerState +{ + return _videoNode.playerState; +} + #pragma mark - Helpers - (NSString *)timeStringForCMTime:(CMTime)time forTimeLabelType:(ASVideoPlayerNodeControlType)type {