mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2026-01-06 21:22:44 +00:00
Merge pull request #1147 from lappp9/ASVideoNode
[ASVideoNode] Video muting, tap delegate override, general cleanup
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -27,30 +27,23 @@
|
||||
CGRect buttonBounds = CGRectMake(originX, bounds.size.height/4, bounds.size.width/2, bounds.size.height/2);
|
||||
CGFloat widthHeight = buttonBounds.size.width;
|
||||
|
||||
//When the video isn't a square, the lower bound should be used to figure out the circle size
|
||||
if (bounds.size.width < bounds.size.height) {
|
||||
//then use the width to determine the rect size then calculate the origin x y
|
||||
widthHeight = bounds.size.width/2;
|
||||
originX = (bounds.size.width - widthHeight)/2;
|
||||
buttonBounds = CGRectMake(originX, (bounds.size.height - widthHeight)/2, widthHeight, widthHeight);
|
||||
}
|
||||
if (bounds.size.width > bounds.size.height) {
|
||||
//use the height
|
||||
widthHeight = bounds.size.height/2;
|
||||
originX = (bounds.size.width - widthHeight)/2;
|
||||
buttonBounds = CGRectMake(originX, (bounds.size.height - widthHeight)/2, widthHeight, widthHeight);
|
||||
}
|
||||
|
||||
if (!isRasterizing) {
|
||||
[[UIColor clearColor] set];
|
||||
UIRectFill(bounds);
|
||||
}
|
||||
|
||||
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
|
||||
// Circle Drawing
|
||||
UIBezierPath *ovalPath = [UIBezierPath bezierPathWithOvalInRect: buttonBounds];
|
||||
[[UIColor colorWithWhite:0.0 alpha:0.5] setFill];
|
||||
[ovalPath stroke];
|
||||
[ovalPath fill];
|
||||
|
||||
// Triangle Drawing
|
||||
|
||||
@@ -73,8 +73,6 @@
|
||||
XCTAssertEqualObjects(item, secondItem);
|
||||
}
|
||||
|
||||
//Touch Handling
|
||||
|
||||
- (void)testSpinnerDefaultsToNil
|
||||
{
|
||||
XCTAssertNil(_videoNode.spinner);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user