Peter 9bc996374f Add 'submodules/AsyncDisplayKit/' from commit '02bedc12816e251ad71777f9d2578329b6d2bef6'
git-subtree-dir: submodules/AsyncDisplayKit
git-subtree-mainline: d06f423e0ed3df1fed9bd10d79ee312a9179b632
git-subtree-split: 02bedc12816e251ad71777f9d2578329b6d2bef6
2019-06-11 18:42:43 +01:00

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