From fcd3af5bcca2ea5064fb8ee9d32e9d2b1fbe7aee Mon Sep 17 00:00:00 2001 From: Yuki MIZUNO Date: Mon, 5 Jan 2015 16:16:33 +0900 Subject: [PATCH] Change segmented control style --- Limelight/AppDelegate.m | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Limelight/AppDelegate.m b/Limelight/AppDelegate.m index 9e762d8..c697a16 100644 --- a/Limelight/AppDelegate.m +++ b/Limelight/AppDelegate.m @@ -22,6 +22,30 @@ static NSOperationQueue* mainQueue; [[UISegmentedControl appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Roboto-Regular" size:[UIFont systemFontSize]], NSFontAttributeName, nil] forState:UIControlStateNormal]; [[UIButton appearance].titleLabel setFont:[UIFont fontWithName:@"Roboto-Regular" size:[UIFont systemFontSize]]]; + + // Generate selected segment background image + CGSize borderImageSize = CGSizeMake(1.f, 100.f); + + UIGraphicsBeginImageContext(borderImageSize); + CGContextRef context = UIGraphicsGetCurrentContext(); + + CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); + CGContextFillRect(context, CGRectMake(0.f, borderImageSize.height * 0.8, borderImageSize.width, borderImageSize.height)); + + UIImage *selectedSegmentBG = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + // Clear default border and background color + [[UISegmentedControl appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; + [[UISegmentedControl appearance] setDividerImage:[[UIImage alloc] init] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; + + // Set selected segment background image + [[UISegmentedControl appearance] setBackgroundImage:[selectedSegmentBG imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; + + // Change text color on UISegmentedControl + [[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]} forState:UIControlStateNormal]; + [[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]} forState:UIControlStateSelected]; + return YES; }