mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00

git-subtree-dir: submodules/AsyncDisplayKit git-subtree-mainline: d06f423e0ed3df1fed9bd10d79ee312a9179b632 git-subtree-split: 02bedc12816e251ad71777f9d2578329b6d2bef6
210 lines
7.3 KiB
Objective-C
210 lines
7.3 KiB
Objective-C
//
|
|
// ViewController.m
|
|
// Texture
|
|
//
|
|
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
|
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
|
|
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
|
|
#import "ViewController.h"
|
|
#import <AsyncDisplayKit/AsyncDisplayKit.h>
|
|
#import <AsyncDisplayKit/ASVideoPlayerNode.h>
|
|
#import "VideoModel.h"
|
|
#import "VideoContentCell.h"
|
|
|
|
@interface ViewController()<ASVideoPlayerNodeDelegate, ASTableDelegate, ASTableDataSource>
|
|
@property (nonatomic, strong) ASVideoPlayerNode *videoPlayerNode;
|
|
@end
|
|
|
|
@implementation ViewController
|
|
{
|
|
ASTableNode *_tableNode;
|
|
NSMutableArray<VideoModel*> *_videoFeedData;
|
|
}
|
|
|
|
- (instancetype)init
|
|
{
|
|
_tableNode = [[ASTableNode alloc] init];
|
|
_tableNode.delegate = self;
|
|
_tableNode.dataSource = self;
|
|
|
|
if (!(self = [super initWithNode:_tableNode])) {
|
|
return nil;
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void)loadView
|
|
{
|
|
[super loadView];
|
|
|
|
_videoFeedData = [[NSMutableArray alloc] initWithObjects:[[VideoModel alloc] init], [[VideoModel alloc] init], nil];
|
|
|
|
[_tableNode reloadData];
|
|
}
|
|
|
|
- (void)viewWillAppear:(BOOL)animated
|
|
{
|
|
[super viewWillAppear:animated];
|
|
|
|
//[self.view addSubnode:self.videoPlayerNode];
|
|
|
|
//[self.videoPlayerNode setNeedsLayout];
|
|
}
|
|
|
|
#pragma mark - ASCollectionDelegate - ASCollectionDataSource
|
|
|
|
- (NSInteger)numberOfSectionsInTableNode:(ASTableNode *)tableNode
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
- (NSInteger)tableNode:(ASTableNode *)tableNode numberOfRowsInSection:(NSInteger)section
|
|
{
|
|
return _videoFeedData.count;
|
|
}
|
|
|
|
- (ASCellNode *)tableNode:(ASTableNode *)tableNode nodeForRowAtIndexPath:(NSIndexPath *)indexPath
|
|
{
|
|
VideoModel *videoObject = [_videoFeedData objectAtIndex:indexPath.row];
|
|
VideoContentCell *cellNode = [[VideoContentCell alloc] initWithVideoObject:videoObject];
|
|
return cellNode;
|
|
}
|
|
|
|
- (ASVideoPlayerNode *)videoPlayerNode;
|
|
{
|
|
if (_videoPlayerNode) {
|
|
return _videoPlayerNode;
|
|
}
|
|
|
|
NSURL *fileUrl = [NSURL URLWithString:@"https://www.w3schools.com/html/mov_bbb.mp4"];
|
|
|
|
_videoPlayerNode = [[ASVideoPlayerNode alloc] initWithURL:fileUrl];
|
|
_videoPlayerNode.delegate = self;
|
|
// _videoPlayerNode.disableControls = YES;
|
|
//
|
|
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
// _videoPlayerNode.disableControls = NO;
|
|
// });
|
|
|
|
_videoPlayerNode.backgroundColor = [UIColor blackColor];
|
|
|
|
return _videoPlayerNode;
|
|
}
|
|
|
|
#pragma mark - ASVideoPlayerNodeDelegate
|
|
//- (NSArray *)videoPlayerNodeNeededControls:(ASVideoPlayerNode *)videoPlayer
|
|
//{
|
|
// return @[ @(ASVideoPlayerNodeControlTypePlaybackButton),
|
|
// @(ASVideoPlayerNodeControlTypeElapsedText),
|
|
// @(ASVideoPlayerNodeControlTypeScrubber),
|
|
// @(ASVideoPlayerNodeControlTypeDurationText) ];
|
|
//}
|
|
//
|
|
//- (UIColor *)videoPlayerNodeScrubberMaximumTrackTint:(ASVideoPlayerNode *)videoPlayer
|
|
//{
|
|
// return [UIColor colorWithRed:1 green:1 blue:1 alpha:0.3];
|
|
//}
|
|
//
|
|
//- (UIColor *)videoPlayerNodeScrubberMinimumTrackTint:(ASVideoPlayerNode *)videoPlayer
|
|
//{
|
|
// return [UIColor whiteColor];
|
|
//}
|
|
//
|
|
//- (UIColor *)videoPlayerNodeScrubberThumbTint:(ASVideoPlayerNode *)videoPlayer
|
|
//{
|
|
// return [UIColor whiteColor];
|
|
//}
|
|
//
|
|
//- (NSDictionary *)videoPlayerNodeTimeLabelAttributes:(ASVideoPlayerNode *)videoPlayerNode timeLabelType:(ASVideoPlayerNodeControlType)timeLabelType
|
|
//{
|
|
// NSDictionary *options;
|
|
//
|
|
// if (timeLabelType == ASVideoPlayerNodeControlTypeElapsedText) {
|
|
// options = @{
|
|
// NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:16.0],
|
|
// NSForegroundColorAttributeName: [UIColor orangeColor]
|
|
// };
|
|
// } else if (timeLabelType == ASVideoPlayerNodeControlTypeDurationText) {
|
|
// options = @{
|
|
// NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:16.0],
|
|
// NSForegroundColorAttributeName: [UIColor redColor]
|
|
// };
|
|
// }
|
|
//
|
|
// return options;
|
|
//}
|
|
|
|
/*- (ASLayoutSpec *)videoPlayerNodeLayoutSpec:(ASVideoPlayerNode *)videoPlayer
|
|
forControls:(NSDictionary *)controls
|
|
forConstrainedSize:(ASSizeRange)constrainedSize
|
|
{
|
|
|
|
NSMutableArray *bottomControls = [[NSMutableArray alloc] init];
|
|
NSMutableArray *topControls = [[NSMutableArray alloc] init];
|
|
|
|
ASDisplayNode *scrubberNode = controls[@(ASVideoPlayerNodeControlTypeScrubber)];
|
|
ASDisplayNode *playbackButtonNode = controls[@(ASVideoPlayerNodeControlTypePlaybackButton)];
|
|
ASTextNode *elapsedTexNode = controls[@(ASVideoPlayerNodeControlTypeElapsedText)];
|
|
ASTextNode *durationTexNode = controls[@(ASVideoPlayerNodeControlTypeDurationText)];
|
|
|
|
if (playbackButtonNode) {
|
|
[bottomControls addObject:playbackButtonNode];
|
|
}
|
|
|
|
if (scrubberNode) {
|
|
scrubberNode.preferredFrameSize = CGSizeMake(constrainedSize.max.width, 44.0);
|
|
[bottomControls addObject:scrubberNode];
|
|
}
|
|
|
|
if (elapsedTexNode) {
|
|
[topControls addObject:elapsedTexNode];
|
|
}
|
|
|
|
if (durationTexNode) {
|
|
[topControls addObject:durationTexNode];
|
|
}
|
|
|
|
ASLayoutSpec *spacer = [[ASLayoutSpec alloc] init];
|
|
spacer.flexGrow = 1.0;
|
|
|
|
ASStackLayoutSpec *topBarSpec = [ASStackLayoutSpec stackLayoutSpecWithDirection:ASStackLayoutDirectionHorizontal
|
|
spacing:10.0
|
|
justifyContent:ASStackLayoutJustifyContentCenter
|
|
alignItems:ASStackLayoutAlignItemsCenter
|
|
children:topControls];
|
|
|
|
|
|
|
|
UIEdgeInsets topBarSpecInsets = UIEdgeInsetsMake(20.0, 10.0, 0.0, 10.0);
|
|
|
|
ASInsetLayoutSpec *topBarSpecInsetSpec = [ASInsetLayoutSpec insetLayoutSpecWithInsets:topBarSpecInsets child:topBarSpec];
|
|
topBarSpecInsetSpec.alignSelf = ASStackLayoutAlignSelfStretch;
|
|
|
|
ASStackLayoutSpec *controlbarSpec = [ASStackLayoutSpec stackLayoutSpecWithDirection:ASStackLayoutDirectionHorizontal
|
|
spacing:10.0
|
|
justifyContent:ASStackLayoutJustifyContentStart
|
|
alignItems:ASStackLayoutAlignItemsCenter
|
|
children:bottomControls];
|
|
controlbarSpec.alignSelf = ASStackLayoutAlignSelfStretch;
|
|
|
|
UIEdgeInsets insets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0);
|
|
|
|
ASInsetLayoutSpec *controlbarInsetSpec = [ASInsetLayoutSpec insetLayoutSpecWithInsets:insets child:controlbarSpec];
|
|
|
|
controlbarInsetSpec.alignSelf = ASStackLayoutAlignSelfStretch;
|
|
|
|
ASStackLayoutSpec *mainVerticalStack = [ASStackLayoutSpec stackLayoutSpecWithDirection:ASStackLayoutDirectionVertical
|
|
spacing:0.0
|
|
justifyContent:ASStackLayoutJustifyContentStart
|
|
alignItems:ASStackLayoutAlignItemsStart
|
|
children:@[ topBarSpecInsetSpec, spacer, controlbarInsetSpec ]];
|
|
|
|
|
|
return mainVerticalStack;
|
|
}*/
|
|
|
|
@end
|