// // 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 #import #import "VideoModel.h" #import "VideoContentCell.h" @interface ViewController() @property (nonatomic, strong) ASVideoPlayerNode *videoPlayerNode; @end @implementation ViewController { ASTableNode *_tableNode; NSMutableArray *_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