added muting property and delegate callback to override video tapping

This commit is contained in:
Luke Parham 2016-01-29 09:27:48 -08:00
parent af37a48421
commit 2d1499ab4f
5 changed files with 61 additions and 9 deletions

View File

@ -1616,6 +1616,7 @@
058D09B9195D04C000B7D73C /* Frameworks */,
058D09BA195D04C000B7D73C /* Resources */,
3B9D88CDF51B429C8409E4B6 /* Copy Pods Resources */,
FB42E06CF915B60406431170 /* Embed Pods Frameworks */,
);
buildRules = (
);
@ -1745,6 +1746,21 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
FB42E06CF915B60406431170 /* Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Embed Pods Frameworks";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */

View File

@ -24,6 +24,8 @@
@property (nonatomic, assign, readwrite) BOOL shouldAutoplay;
@property (nonatomic, assign, readwrite) BOOL shouldAutorepeat;
@property (nonatomic, assign, readwrite) BOOL muted;
@property (atomic) NSString *gravity;
@property (atomic) ASButtonNode *playButton;
@ -39,5 +41,6 @@
@protocol ASVideoNodeDelegate <NSObject>
@optional
- (void)videoPlaybackDidFinish:(ASVideoNode *)videoNode;
- (void)videoNodeWasTapped:(ASVideoNode *)videoNode;
@end

View File

@ -19,6 +19,8 @@
BOOL _shouldAutorepeat;
BOOL _shouldAutoplay;
BOOL _muted;
AVAsset *_asset;
@ -31,6 +33,7 @@
ASDisplayNode *_playerNode;
ASDisplayNode *_spinner;
NSString *_gravity;
dispatch_queue_t _previewQueue;
}
@ -137,6 +140,7 @@
AVPlayerLayer *playerLayer = [[AVPlayerLayer alloc] init];
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
playerLayer.player = _player;
playerLayer.videoGravity = [self gravity];
@ -176,10 +180,14 @@
- (void)tapped
{
if (_shouldBePlaying) {
[self pause];
if (self.delegate && [self.delegate respondsToSelector:@selector(videoNodeWasTapped:)]) {
[self.delegate videoNodeWasTapped:self];
} else {
[self play];
if (_shouldBePlaying) {
[self pause];
} else {
[self play];
}
}
}
@ -209,11 +217,11 @@
[_player replaceCurrentItemWithPlayerItem:_currentItem];
} else {
_player = [[AVPlayer alloc] initWithPlayerItem:_currentItem];
_player.muted = _muted;
}
}
}
- (void)clearFetchedData
{
[super clearFetchedData];
@ -231,11 +239,14 @@
if (_shouldAutoplay && _playerNode.isNodeLoaded) {
[self play];
} else if (_shouldAutoplay) {
_shouldBePlaying = YES;
}
if (isVisible) {
if (_playerNode.isNodeLoaded) {
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
((AVPlayerLayer *)_playerNode.layer).player = _player;
}
@ -256,7 +267,7 @@
[self addSubnode:playButton];
[_playButton addTarget:self action:@selector(play) forControlEvents:ASControlNodeEventTouchUpInside];
[_playButton addTarget:self action:@selector(tapped) forControlEvents:ASControlNodeEventTouchUpInside];
}
- (ASButtonNode *)playButton
@ -310,6 +321,20 @@
return _gravity;
}
- (BOOL)muted
{
ASDN::MutexLocker l(_lock);
return _muted;
}
- (void)setMuted:(BOOL)muted
{
ASDN::MutexLocker l(_lock);
_muted = muted;
}
#pragma mark - Video Playback
- (void)play
@ -330,6 +355,7 @@
AVPlayerLayer *playerLayer = [[AVPlayerLayer alloc] init];
if (!_player) {
_player = [AVPlayer playerWithPlayerItem:[[AVPlayerItem alloc] initWithAsset:_asset]];
_player.muted = _muted;
}
playerLayer.player = _player;
playerLayer.videoGravity = [self gravity];

View File

@ -44,7 +44,6 @@
// Circle Drawing
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect: buttonBounds];
[[UIColor colorWithWhite:0.0 alpha:0.5] setFill];
[ovalPath stroke];
[ovalPath fill];
// Triangle Drawing

View File

@ -43,7 +43,6 @@
videoNode.backgroundColor = [UIColor lightGrayColor];
// videoNode.playButton = [self playButton];
return videoNode;
}
@ -61,7 +60,8 @@
nicCageVideo.backgroundColor = [UIColor lightGrayColor];
nicCageVideo.shouldAutorepeat = YES;
// nicCageVideo.playButton = [self playButton];
nicCageVideo.shouldAutoplay = YES;
nicCageVideo.muted = YES;
return nicCageVideo;
}
@ -79,7 +79,6 @@
simonVideo.backgroundColor = [UIColor lightGrayColor];
simonVideo.shouldAutorepeat = YES;
// simonVideo.playButton = [self playButton];
simonVideo.shouldAutoplay = YES;
return simonVideo;
@ -99,6 +98,15 @@
return playButton;
}
- (void)videoNodeWasTapped:(ASVideoNode *)videoNode
{
if (videoNode.player.muted == YES) {
videoNode.player.muted = NO;
} else {
videoNode.player.muted = YES;
}
}
- (BOOL)prefersStatusBarHidden
{
return YES;