From befde5eb286477438d74e5a62d70e5f50f942bde Mon Sep 17 00:00:00 2001 From: Andrew Scagnelli Date: Fri, 19 Oct 2018 00:03:14 -0400 Subject: [PATCH] system theme, tvos icon styling - using tvos icon styling - updated to use system theme (light/dark) instead of always being grey --- Limelight/UIAppView.m | 21 +++++++++++++++++++ .../ViewControllers/MainFrameViewController.m | 11 ++++++++-- Moonlight TV/Base.lproj/Main.storyboard | 5 ++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Limelight/UIAppView.m b/Limelight/UIAppView.m index 03094eb..7937d1c 100644 --- a/Limelight/UIAppView.m +++ b/Limelight/UIAppView.m @@ -32,7 +32,11 @@ static UIImage* noImage; noImage = [UIImage imageNamed:@"NoAppImage"]; } +#if TARGET_OS_TV + _appButton = [UIButton buttonWithType:UIButtonTypeSystem]; +#else _appButton = [UIButton buttonWithType:UIButtonTypeCustom]; +#endif [_appButton setBackgroundImage:noImage forState:UIControlStateNormal]; [_appButton setContentEdgeInsets:UIEdgeInsetsMake(0, 4, 0, 4)]; [_appButton sizeToFit]; @@ -64,10 +68,15 @@ static UIImage* noImage; if ([_app.id isEqualToString:_app.host.currentGame]) { // Only create the app overlay if needed _appOverlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Play"]]; +#if TARGET_OS_TV + _appOverlay.adjustsImageWhenAncestorFocused = YES; + _appOverlay.userInteractionEnabled = YES; +#else _appOverlay.layer.shadowColor = [UIColor blackColor].CGColor; _appOverlay.layer.shadowOffset = CGSizeMake(0, 0); _appOverlay.layer.shadowOpacity = 1; _appOverlay.layer.shadowRadius = 2.0; +#endif [self addSubview:_appOverlay]; @@ -91,8 +100,20 @@ static UIImage* noImage; // TODO: Improve no-app image detection if (!(appImage.size.width == 130.f && appImage.size.height == 180.f) && // GFE 2.0 !(appImage.size.width == 628.f && appImage.size.height == 888.f)) { // GFE 3.0 +#if TARGET_OS_TV + //custom image to do TvOS hover popup effect + UIImageView *imageView = [[UIImageView alloc] initWithImage:appImage]; + imageView.userInteractionEnabled = YES; + imageView.adjustsImageWhenAncestorFocused = YES; + imageView.frame = CGRectMake(0, 0, 200, 265); + [_appButton addSubview:imageView]; + + _appButton.frame = CGRectMake(0, 0, 200, 265); + self.frame = CGRectMake(0, 0, 200, 265); +#else _appButton.frame = CGRectMake(0, 0, appImage.size.width / 2, appImage.size.height / 2); self.frame = CGRectMake(0, 0, appImage.size.width / 2, appImage.size.height / 2); +#endif _appOverlay.frame = CGRectMake(0, 0, self.frame.size.width / 2.f, self.frame.size.height / 4.f); _appOverlay.layer.shadowRadius = 4.0; [_appOverlay setCenter:CGPointMake(self.frame.size.width/2, self.frame.size.height/6)]; diff --git a/Limelight/ViewControllers/MainFrameViewController.m b/Limelight/ViewControllers/MainFrameViewController.m index b73394d..b6e19d7 100644 --- a/Limelight/ViewControllers/MainFrameViewController.m +++ b/Limelight/ViewControllers/MainFrameViewController.m @@ -992,9 +992,8 @@ static NSMutableSet* hostList; cell.layer.shadowOpacity = 0.5f; cell.layer.shadowPath = shadowPath.CGPath; - cell.layer.borderWidth = 1; - #if !TARGET_OS_TV + cell.layer.borderWidth = 1; cell.layer.borderColor = [[UIColor colorWithRed:0 green:0 blue:0 alpha:0.3f] CGColor]; cell.exclusiveTouch = YES; #endif @@ -1046,12 +1045,20 @@ static NSMutableSet* hostList; self.navigationController.navigationBar.topItem.rightBarButtonItem.enabled = YES; } +#if TARGET_OS_TV +- (BOOL)canBecomeFocused { + return YES; +} +#endif + - (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator { +#if !TARGET_OS_TV if (context.nextFocusedView != nil) { [context.nextFocusedView setAlpha:0.8]; } [context.previouslyFocusedView setAlpha:1.0]; +#endif } @end diff --git a/Moonlight TV/Base.lproj/Main.storyboard b/Moonlight TV/Base.lproj/Main.storyboard index 80a6980..2645447 100644 --- a/Moonlight TV/Base.lproj/Main.storyboard +++ b/Moonlight TV/Base.lproj/Main.storyboard @@ -1,11 +1,11 @@ - + - + @@ -39,7 +39,6 @@ -