[翻译] 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
时间: 2024-12-30 19:28:18

[翻译] ColourClock 将时间值转换成背景色的相关文章

PHP实现将颜色hex值转换成rgb的方法_php技巧

本文实例讲述了PHP实现将颜色hex值转换成rgb的方法.分享给大家供大家参考,具体如下: function hex2rgb( $colour ) { if ( $colour[0] == '#' ) { $colour = substr( $colour, 1 ); } if ( strlen( $colour ) == 6 ) { list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $co

进制转换-java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制

问题描述 java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制 java怎么把一个数组里面的16进制值转换成8进制,我想先把16进制转成2进制再转8进制,但是老是运行出错.大神们能不能给个小例子解释一下,谢谢 解决方案 http://blog.csdn.net/vanezuo/article/details/6556768 解决方案二: 使用函数啊,你找一下,Java有相应的函数能做到 解决方案三: 如果你的程序出错,你贴出你的程序才知道. 也可以参考我给你的

javascript-js 将CST的时间字符串转换成需要的日期格式字符串

问题描述 js 将CST的时间字符串转换成需要的日期格式字符串 例如,将Mon Apr 27 09:08:20 CST 2015转化为2015-4-27 09:08:20 请问实现这个功能的JS代码应该怎么写呢? 解决方案 使用toLocaleString()方法试下: /** * @return a string representation of this date, using the locale * conventions. */ public String toLocaleStrin

sql-如何把SQL里的true和flash值转换成是和否显示在网页中?

问题描述 如何把SQL里的true和flash值转换成是和否显示在网页中? 如图,应该写什么?在哪写?求大神指教! 解决方案 标题打错了.是true和false~ 解决方案二: 在页面写啊,判断那个值如果是true就 是 false就否 解决方案三: 直接判断啊 if(flag==true){ ... }else{ ... } 解决方案四: 同上 或者在后台处理 好了返回给前台也一样 解决方案五: 直接写个判断,true就该某个位置的text为是,反之为否 解决方案六: SQL语句中试试用ToC

php把数组值转换成键的方法_php技巧

本文实例讲述了php把数组值转换成键的方法.分享给大家供大家参考.具体如下: function values2keys($arr, $value=1){ $new = array(); while (list($k,$v) = each($arr)){ $v = trim($v); if ($v != ''){ $new[$v] = $value; } } return $new; } 希望本文所述对大家的php程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课

js将当前时间格式转换成时间搓(自写)_javascript技巧

自己写的一个方法 复制代码 代码如下: function split_time(time){//将当前时间转换成时间搓 例如2013-09-11 12:12:12 var arr=time.split(" "); var day=arr[0].split("-"); var hour=arr[1].split(":"); return Date.UTC(day[0],(day[1]-1),day[2],hour[0],hour[1],hour[2

javascript 中如何将gmt时间字符串转换成日期

问题描述 从struts2中取到的json数据为"Tue Dec 15 00:00:00 GMT+08:00 2009"是一个格林威治时间字符串怎样将它转换成date谢谢! 问题补充:redstarofsleep 写道 解决方案 我也跑了下 firefox,chrome,opera 正常safari和ie6 有问题ie7 以上没有测试解决方案二:测试过的 ie火狐 opera 都正常解决方案三:java中不想改,可以把这个字符串的倒数第一个冒号replace掉解决方案四:var str

php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串_php技巧

数据库脚本: -- -------------------------------------------------------- -- -- 表的结构 `highot_attachment` -- 复制代码 代码如下: CREATE TABLE IF NOT EXISTS `highot_attachment` ( `id` int(11) NOT NULL auto_increment, `phone_number_id` int(11) NOT NULL COMMENT 'phone_n

css值转换成数值请抛弃parseInt_javascript技巧

如: 复制代码 代码如下: <div id="demo" style="width:24px"></div> <script> var elem = document.getElementById('demo'), width = elem.style.width; alert(parseInt(width));// 24 </script> 可是如果css值是这样呢: 复制代码 代码如下: <div id=&q