• [翻译] ColourClock 将时间值转换成背景色


    ColourClock 将时间值转换成背景色

    https://github.com/bennyguitar/ColourClock

    This project converts Time to Hex/RGB, and is quite beautiful to look at. This was HEAVILY inspired byhttp://thecolourclock.co.uk and really, all credit goes to them.

    这个工程是用来把时间值转换为Hex/RGB值的,看起来非常漂亮。灵感来自于这个网站 http://thecolourclock.co.uk

      

    使用思路:

    将一个要根据时间改变颜色View中layer的backgroundcolor赋值即可动态改变颜色。

    附录:

    ViewController.h

    //
    //  ViewController.h
    //  ColourClock
    //
    //  Created by Ben Gordon on 12/20/12.
    //  Copyright (c) 2012 Ben Gordon. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    enum ClockType {
        ClockTypeMilitary = 0,
        ClockTypeHex = 1,
        ClockTypeRGB = 2
    };
    
    @interface ViewController : UIViewController {
        
        __weak IBOutlet UILabel *timeLabel;
        __weak IBOutlet UILabel *appearanceType;
        
        enum ClockType currentType;
    }
    
    
    - (IBAction)changeClockType:(id)sender;
    
    @end

    ViewController.m

    //
    //  ViewController.m
    //  ColourClock
    //
    //  Created by Ben Gordon on 12/20/12.
    //  Copyright (c) 2012 Ben Gordon. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    #pragma mark - View Lifecycle
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        currentType = ClockTypeMilitary;
        [self changeColor];
        
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    #pragma mark - Change Colors
    
    -(void)changeColor {
        // Set up date formatters for hour, min, seconds.
        // Then create strings from the current date.
        NSDateFormatter *formatHour = [[NSDateFormatter alloc] init];
        NSDateFormatter *formatMin = [[NSDateFormatter alloc] init];
        NSDateFormatter *formatSec = [[NSDateFormatter alloc] init];
        [formatHour setDateFormat:@"HH"];
        [formatMin setDateFormat:@"mm"];
        [formatSec setDateFormat:@"ss"];
        NSString *hour = [formatHour stringFromDate:[NSDate date]];
        NSString *minute = [formatMin stringFromDate:[NSDate date]];
        NSString *second = [formatSec stringFromDate:[NSDate date]];
        
        
        // Create floats of the time value.
        float hourFloat = [hour floatValue] * 255.0f / 23.0f;
        float minFloat = [minute floatValue] * 255.0f / 59.0f;
        float secFloat = [second floatValue] * 255.0f / 59.0f;
        
        
        // Create unsigned ints for Hex translation
        int32_t hourint = hourFloat + 0.5;
        int32_t minint = minFloat + 0.5;
        int32_t secint = secFloat + 0.5;
        
        
        // Change text color so it's readable.
        if (hourFloat > 200 && minFloat > 200 && secFloat > 200) {
            timeLabel.textColor = [UIColor darkGrayColor];
            appearanceType.textColor = [UIColor darkGrayColor];
        }
        else {
            timeLabel.textColor = [UIColor whiteColor];
            appearanceType.textColor = [UIColor whiteColor];
        }
        
        
        // Set Labels
        if (currentType == ClockTypeMilitary) {
            appearanceType.text = @"MILITARY TIME";
            timeLabel.text = [NSString stringWithFormat:@"%@:%@:%@", hour, minute, second];
        }
        else if (currentType == ClockTypeHex) {
            appearanceType.text = @"HEX COLOR CODE";
            timeLabel.text = [NSString stringWithFormat:@"#%02X%02X%02X",hourint,minint,secint];
        }
        else {
            appearanceType.text = @"RGB VALUES";
            timeLabel.text = [NSString stringWithFormat:@"%.0f:%.0f:%.0f", hourFloat, minFloat, secFloat];
        }
        
        
        // Finally, change image to the right color
        self.view.backgroundColor = [UIColor colorWithRed:(hourFloat/255.0f) green:(minFloat/255.0f) blue:(secFloat/255.0f) alpha:1.0];
        
        // And do it all over again, every .05 seconds so it's more accurate
        [self performSelector:@selector(changeColor) withObject:nil afterDelay:0.05];
    }
    
    
    
    
    #pragma mark - Change Clock Type
    
    - (IBAction)changeClockType:(id)sender {
        currentType++;
        
        if (currentType > ClockTypeRGB) {
            currentType = ClockTypeMilitary;
        }
    }
    
    @end
  • 相关阅读:
    C# -- 使用缓冲区进行文件下载操作
    C# -- 使用ODBC连接数据库
    C# -- Quartz.Net入门案例
    C# -- LinkedList的使用
    ASP.NET -- 获取浏览器信息
    Windows -- 从注册表删除IE浏览器加载项
    C# -- FTP上传下载
    C# -- 使用Ping检查网络是否正常
    WinForm -- 为TextBox文本框添加鼠标右键菜单
    C# -- 使用Parallel并行执行任务
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3674594.html
Copyright © 2020-2023  润新知