In my app "Money42",it's has a switch button to set who pay the money.
When the switch button init,it will use delegate to set color itself.
The delegate method is only do one thing,that's return a color NSArray from NSUserDefaults which we set before.
Step 1:Add New Class
File --> New --> File

Choose Objective-C Class

Set a class name "EllipseShape"(subclass of UIView)

Step 2:Edit EllipseShape.h
#import <UIKit/UIKit.h> @protocol EllipseColorDelegate <NSObject> -(NSArray*)giveEllipseColors; @end @interface EllipseShape : UIView @property(nonatomic,weak)id<EllipseColorDelegate>delegate; @end
Step 3:Edit EllipseShape.m
#import "EllipseShape.h" @implementation EllipseShape - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.opaque = NO; } return self; } - (void)drawRect:(CGRect)rect { NSArray *arrayOfColors = [self.delegate giveEllipseColors]; int red = [[arrayOfColors objectAtIndex:0] intValue]; int green = [[arrayOfColors objectAtIndex:1] intValue]; int blue = [[arrayOfColors objectAtIndex:2] intValue]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextClearRect(context, rect); CGContextSetFillColorWithColor(context, [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:1.0].CGColor); CGRect rectangle = CGRectMake(0,0,self.frame.size.width,self.frame.size.height); CGContextAddEllipseInRect(context, rectangle); CGContextFillPath(context); } @end
Step 4:Set Default Color in AppDelegate.m
Add in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSString *dateKey = @"dateKey"; NSDate *lastRead = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:dateKey]; if (lastRead == nil) { NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:[NSDate date], dateKey, nil]; [[NSUserDefaults standardUserDefaults] setObject:@[[NSNumber numberWithDouble:0], [NSNumber numberWithDouble:210], [NSNumber numberWithDouble:223]] forKey:@"currentColor"]; [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; [[NSUserDefaults standardUserDefaults] synchronize]; } [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:dateKey];
Step 5:Set delegate in ViewController.h
#import <UIKit/UIKit.h> #import "EllipseShape.h" @interface ViewController : UIViewController<EllipseColorDelegate> @end
Step 5:implement in ViewController.m
#import "ViewController.h" @interface ViewController () @property (nonatomic)double redQuantity; @property (nonatomic)double greenQuantity; @property (nonatomic)double blueQuantity; @end @implementation ViewController @synthesize redQuantity; @synthesize blueQuantity; @synthesize greenQuantity; - (void)viewDidLoad { [super viewDidLoad]; //Get color from NSUserDefaults NSArray *selfColorArray=[[NSUserDefaults standardUserDefaults] objectForKey:@"currentColor"]; self.redQuantity=[[selfColorArray objectAtIndex:0]doubleValue]; self.greenQuantity=[[selfColorArray objectAtIndex:1]doubleValue]; self.blueQuantity=[[selfColorArray objectAtIndex:2]doubleValue]; //Create a ellipse EllipseShape *ellipse=[[EllipseShape alloc]initWithFrame:CGRectMake(160,100, 18, 18)]; [ellipse setDelegate:self]; [self.view addSubview:ellipse]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } //=============================== // EllipseColorDelegate //=============================== -(NSArray *)giveEllipseColors { NSNumber *redNumber = [NSNumber numberWithDouble:self.redQuantity]; NSNumber *greenNumber = [NSNumber numberWithDouble:self.greenQuantity]; NSNumber *blueNumber = [NSNumber numberWithDouble:self.blueQuantity]; NSArray *array = [[NSArray alloc] initWithObjects:redNumber, greenNumber,blueNumber, nil]; return array; } @end
Step 6:Run it
You will see the blue ellipse and you also can create a setting ViewController to change NSUserDefaults color.

This comment has been removed by a blog administrator.
ReplyDeleteWisconsin Football
ReplyDeleteWisconsin Football 2018
Wisconsin Football Schedule
Wisconsin Football 2018 Schedule
Wisconsin Football Live
Wisconsin Football Live Stream
Wisconsin Football Live Streaming
https://wisconsinfootball.de/
I recommend iDealshare VideoGo as the most professional audio converter and video converter.https://www.idealshare.net/3ga-to-mp3-converter.html
ReplyDelete