首先很感谢大家的支持与关注。《Web Color 的 Swfit 实现》一文一经公布。訪问量迅速攀升,让本人受宠若惊。

为表达感激之情,今天早上把彩虹渐变也顺手实现了。

最新代码&相关资料下载地址:https://github.com/duzixi/RainbowColors-with-Swift(持续维护)

生成函数原型:

  • func rainbowColor(x: Float) -> UIColor

參数取值范围:

x : 0 ~ 256 * 5 - 1

生成全部彩虹渐变色的演示样例:

class ViewController: UIViewController {

    override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib. let viewHeight:Float = Float(self.view.frame.size.height)
let viewWidth:Float = Float(self.view.frame.size.width) //Create all Rainbow Colors
let inc:Float = 256 * 5 / viewHeight; for (var i:Float = 0.0; i < 256 * 5; i += inc) {
let view = UIView();
view.frame = CGRectMake(0, 0 + i / inc, viewWidth, 1);
view.backgroundColor = rainbowColor(i); // <----调用彩虹渐变色函数,參数必须是Float型
self.view.addSubview(view);
}
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

程序运行效果图:

源码參照:

(注意:下面源码未必最新。最新源码请点击进入本文上方的链接获取。)

<span style="font-family:Arial;font-size:14px;">//
// RainbowColor.swift
//
// Created by 杜子兮 on 14-6-29.
// Copyright (c) 2014年 lanou. All rights reserved.
// import UIKit // x: 0 ~ 256 * 5 - 1
func rainbowColor(x :Float) -> UIColor {
var unit:Float = 256
var r:Float = 0, g:Float = 0, b:Float = 0
if ( 0 <= x && x < unit) { //赤 -> 橙 -> 黄
r = unit - 1
g = x
} else if (x < unit * 2) { //黄 -> 绿
r = unit - 1 - x % unit
g = unit - 1
} else if (x < unit * 3) { //绿 -> 青
g = unit - 1 - x % unit / 2
b = x % unit
} else if (x < unit * 4) { //青 -> 蓝
g = unit / 2 - 1 - x % unit / 2
b = unit - 1
} else if (x < unit * 5) { //蓝 -> 紫
r = x % unit
b = unit - 1
}
return UIColor(red:r / (unit - 1), green:g / (unit - 1), blue:b / (unit - 1), alpha: 1.0)
}</span>

程序Bug:

调试环境:Xcode6 Beta

4s和5模拟器都没有问题。用5s測试的时候会提示运算符错误。

猜測是数据类型的问题。可是详细是什么原因没有调试成功,还请各位指教。

【iOS】彩虹渐变色 的 Swift 实现的更多相关文章

  1. iOS Swift-简单值(The Swift Programming Language)

    iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...

  2. Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)

    当前位置: > Swift新手入门 > Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 时间:2014-09-10 16:49来源:未知 作者:啊成 举报 点击:5 ...

  3. iOS圆角view的Swift实现(利用Core Graphics绘制)

    iOS圆角view的Swift实现(利用Core Graphics绘制) 因为app的列表用用到了圆形图片的头像,所以去探究并思考了一下这个问题.首先这个问题有两个方向的解决方案: 把图片弄成圆形的. ...

  4. CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)

    Using The CocoaPods to Manage The Third Party Open-source Libaries 介绍 CocoaPods是用来管理你的Xcode项目的依赖库的.使 ...

  5. ios开发中的Swift面向对象

    iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构 ...

  6. iOS开发——网络编程Swift篇&Alamofire详解

    Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...

  7. [iOS翻译]《The Swift Programming Language》系列:Welcome to Swift-01

    注:CocoaChina翻译小组已着手此书及相关资料的翻译,楼主也加入了,多人协作后的完整译本将很快让大家看到. 翻译群:291864979,想加入的同学请进此群哦.(本系列不再更新,但协作翻译的进度 ...

  8. iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

    IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...

  9. iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

    swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...

随机推荐

  1. 使用git微命令深入理解git工作机制

    首先.这篇不是真正意义上的翻译,所以大家在看的时候不要找相应的英文文章相应着看.这篇文章之所以归类为翻译.是由于最開始有一篇英文文章让我对git内部机制有了清楚的认识,它能够说是我git的启蒙老师吧. ...

  2. spring中bean的设计模式

    默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...

  3. ZOJ 3542 2011大连现场赛D题(简单模拟)

    Hexadecimal View Time Limit: 2 Seconds       Memory Limit: 65536 KB Hexadecimal is very important an ...

  4. vim经常使用命令总结

    vim 选择文本,删除,复制,粘贴   文本的选择,对于编辑器来说,是非常主要的东西,也常常被用到,总结例如以下: v    从光标当前位置開始,光标所经过的地方会被选中,再按一下v结束. V     ...

  5. Java-WebSocket 项目的研究(三) WebSocketClient 类 具体解释

    通过之前两篇文章 Java-WebSocket 项目的研究(一) Java-WebSocket类图描写叙述 Java-WebSocket 项目的研究(二) 小试身手:client连接server并发送 ...

  6. 管理工具 Kafka Manager

    管理工具 Kafka Manager   一.概述 Kafka在雅虎内部被很多团队使用,媒体团队用它做实时分析流水线,可以处理高达20Gbps(压缩数据)的峰值带宽. 为了简化开发者和服务工程师维护K ...

  7. Spark简述及基本架构

    Spark简述 Spark发源于美国加州大学伯克利分校AMPLab的集群计算平台.它立足 于内存计算.从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式. 特点: 1.轻 Spark ...

  8. Linux段管理,BSS段,data段,.rodata段,text段

    近期在解决一个编译问题时,一直在考虑一个问题,那就是Linux下可执行程序执行时内存是什么状态,是依照什么方式分配内存并执行的.查看了一下资料.就此总结一下,众所周知.linux下内存管理是通过虚存管 ...

  9. Web工程师的工具箱 | 酷壳 - CoolShell.cn

    Web工程师的工具箱 | 酷壳 - CoolShell.cn Web工程师的工具箱 2012年12月19日 陈皓 发表评论 阅读评论 30,168 人阅读     本文出自Ivan Zuzak 的&l ...

  10. 通过memcached来实现对tomcat集群中Session的共享策略

    近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能. 上述功能已经实现,有需要了解的朋友可以看我另外一篇博文. Linux下Apache与Tomca ...