1.我创建了三个页面,第一个页面记录第三个页面传过去的秒数,第二个页面过度作用,第三个计算产生数值传给第一个页面 (还有个漂亮时钟)
2.第一个页面
#import "ViewController.h"
#import "First_ViewController.h"
@interface ViewController ()
@property (retain)UILabel * label;
@end
@implementation ViewController
- (void )viewDidLoad {
[super viewDidLoad];
self .view .backgroundColor = [UIColor whiteColor];
_label = [[UILabel alloc]initWithFrame:CGRectMake( [UIScreen mainScreen].bounds .size .width /2 -125 , [UIScreen mainScreen].bounds .size .height /3 -30 , 250 , 60 )];
_label.backgroundColor = [UIColor grayColor];
_label.textAlignment = NSTextAlignmentCenter;
[self .view addSubview:_label];
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake( [UIScreen mainScreen].bounds .size .width /2 -50 , [UIScreen mainScreen].bounds .size .height /2 -30 , 100 , 60 );
btn.backgroundColor = [UIColor grayColor];
[btn setTitle:@"下一页" forState:UIControlStateNormal];
[btn addTarget:self action:@selector (btnAction:) forControlEvents:UIControlEventTouchUpInside];
[self .view addSubview:btn];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector (open:) name:@"open" object:nil ];
}
-(void )btnAction:(UIButton *)sender
{
First_ViewController* firstVC = [[First_ViewController alloc]init];
[self .navigationController pushViewController:firstVC animated:YES ];
}
-(void )open:(NSNotification *)notification
{
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
NSInteger teg = [[ud objectForKey:@"switch" ] intValue];
_label.text = [NSString stringWithFormat:@"%ld" , (long )teg];
}
- (void )didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
3.第二个页面
#import "First_ViewController.h"
#import "Second_ViewController.h"
@interface First_ViewController ()
@end
@implementation First_ViewController
- (void )viewDidLoad {
[super viewDidLoad];
self .view .backgroundColor = [UIColor whiteColor];
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake( [UIScreen mainScreen].bounds .size .width /2 -50 , [UIScreen mainScreen].bounds .size .height /2 -30 , 100 , 60 );
btn.backgroundColor = [UIColor grayColor];
[btn setTitle:@"下一页" forState:UIControlStateNormal];
[btn addTarget:self action:@selector (btnAction:) forControlEvents:UIControlEventTouchUpInside];
[self .view addSubview:btn];
}
-(void )btnAction:(UIButton *)sender
{
Second_ViewController* secondVC = [[Second_ViewController alloc]init];
[self .navigationController pushViewController:secondVC animated:YES ];
}
- (void )didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
4.第三个页面
#import "Second_ViewController.h"
#define CURRENTSEC [[NSCalendar currentCalendar] component:NSCalendarUnitSecond fromDate:[NSDate date]]
#define CURRENTMIN [[NSCalendar currentCalendar] component:NSCalendarUnitMinute fromDate:[NSDate date]]
#define CURRENTHOUR [[NSCalendar currentCalendar] component:NSCalendarUnitHour fromDate:[NSDate date]]
#define CURRENTDAY [[NSCalendar currentCalendar] component:NSCalendarUnitDay fromDate:[NSDate date]]
#define CURRENTMONTH [[NSCalendar currentCalendar] component:NSCalendarUnitMonth fromDate:[NSDate date]]
#define CURRENTYEAR [[NSCalendar currentCalendar] component:NSCalendarUnitYear fromDate:[NSDate date]]
#define ANGEL(x) x/180.0 * M_PI
#define kPerSecondA ANGEL(6)
#define kPerMinuteA ANGEL(6)
#define kPerHourA ANGEL(30)
#define kPerHourMinuteA ANGEL(0.5)
@interface Second_ViewController ()
@property (retain)UILabel * label;
@property (retain)NSTimer* timer;
@property (assign )NSInteger secs;
@property (nonatomic ,strong ) UIImageView *imageClock;
@property (nonatomic ,strong ) CALayer *layerSec;
@property (nonatomic ,strong ) CALayer *layerMin;
@property (nonatomic ,strong ) CALayer *layerHour;
@end
@implementation Second_ViewController
-(void )viewWillDisappear:(BOOL )animated
{
[super viewWillDisappear:YES ];
NSLog (@"视图即将消失" );
[_timer invalidate];
[[NSNotificationCenter defaultCenter]postNotificationName:@"open" object:[NSString stringWithFormat:@"%ld" ,(long )_secs]];
}
- (void )viewDidLoad {
[super viewDidLoad];
self .view .backgroundColor = [UIColor whiteColor];
_label = [[UILabel alloc]initWithFrame:CGRectMake(0 ,80 ,100 ,30 )];
_label.backgroundColor = [UIColor grayColor];
_label.textAlignment = NSTextAlignmentCenter;
[self .view addSubview:_label];
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector (changeFrame:) userInfo:nil repeats:YES ];
[self .view addSubview:self .imageClock ];
[self .imageClock .layer addSublayer:self .layerSec ];
[self .imageClock .layer addSublayer:self .layerMin ];
[self .imageClock .layer addSublayer:self .layerHour ];
[self timeChange];
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector (timeChange) userInfo:nil repeats:YES ];
}
-(void )changeFrame:(NSTimer*)time
{
NSDate * now = [NSDate date];
NSLog (@"now ----> %@" ,now);
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"hh:mm:ss" ];
NSString * str = [df stringFromDate:now];
NSLog (@"str ----> %@" , str);
_label.text = [NSString stringWithFormat:@"%@" ,str];
NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
_secs = [[ud objectForKey:@"switch" ] intValue];
_secs++;
[ud setValue:[NSString stringWithFormat:@"%ld" ,(long )_secs] forKey:@"switch" ];
NSLog (@"%ld" ,(long )_secs);
NSLog (@"ud == %d" , [[ud objectForKey:@"switch" ]intValue]);
}
- (void )timeChange
{
self .layerSec .transform = CATransform3DMakeRotation(CURRENTSEC * kPerSecondA, 0 , 0 , 1 );
self .layerMin .transform = CATransform3DMakeRotation(CURRENTMIN * kPerMinuteA, 0 , 0 , 1 );
self .layerHour .transform = CATransform3DMakeRotation(CURRENTHOUR * kPerHourA, 0 , 0 , 1 );
self .layerHour .transform = CATransform3DMakeRotation(CURRENTMIN * kPerHourMinuteA + CURRENTHOUR*kPerHourA, 0 , 0 , 1 );
}
- (UIImageView *)imageClock
{
if (_imageClock == nil ) {
_imageClock = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"60K58PICIuz_1024" ]];
_imageClock.frame = CGRectMake(100 , 100 , 200 , 200 );
}
return _imageClock;
}
- (CALayer *)layerSec
{
if (_layerSec == nil ) {
_layerSec = [CALayer layer];
_layerSec.bounds = CGRectMake(0 , 0 , 2 , 80 );
_layerSec.backgroundColor = [UIColor redColor].CGColor ;
_layerSec.cornerRadius = 5 ;
_layerSec.anchorPoint = CGPointMake(0.5 , 1 );
_layerSec.position = CGPointMake(self .imageClock .bounds .size .width /2 , self .imageClock .bounds .size .height /2 );
}
return _layerSec;
}
- (CALayer *)layerMin
{
if (_layerMin == nil ) {
_layerMin = [CALayer layer];
_layerMin.bounds = CGRectMake(0 , 0 , 4 , 60 );
_layerMin.backgroundColor = [UIColor blackColor].CGColor ;
_layerMin.cornerRadius = 5 ;
_layerMin.anchorPoint = CGPointMake(0.5 , 1 );
_layerMin.position = CGPointMake(self .imageClock .bounds .size .width /2 , self .imageClock .bounds .size .height /2 );
}
return _layerMin;
}
- (CALayer *)layerHour
{
if (_layerHour == nil ) {
_layerHour = [CALayer layer];
_layerHour.bounds = CGRectMake(0 , 0 , 6 , 40 );
_layerHour.backgroundColor = [UIColor blackColor].CGColor ;
_layerHour.cornerRadius = 5 ;
_layerHour.anchorPoint = CGPointMake(0.5 , 1 );
_layerHour.position = CGPointMake(self .imageClock .bounds .size .width /2 , self .imageClock .bounds .size .height /2 );
}
return _layerHour;
}
- (void )didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end