首先很感谢大家的支持与关注。《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. 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API

    原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...

  2. Eclipse 修改maven 仓储Repository位置

    简述: 使用两个Nexus, 需要配置两份不同的Maven仓库 步骤: 1. 下载新的Maven运行包 2. 进入conf/ 修改setting.xml项 <localRepository> ...

  3. Java Runtime.getRuntime().exec() 执行带空格命令

    可执行文件路径如果包含空格,则在java中不能被获取到. 此时Debug一下,会发现 project=null. project.waitFor 的返回值为1.但是去源路径单击bat文件是可以正常运行 ...

  4. IOT表优缺点

    <pre name="code" class="html">IOT表是将所有东西都塞到叶块中,表就是索引,可以避免回表 首先,对于IOT而言,只有索 ...

  5. Python3.2官方文档翻译--实例对象和方法对象

    6.3.3 实例对象 如今我们用实例对象做什么呢?实例对象唯一可用的操作就是属性引用.如今有两种合法的属性名称:数据属性和方法. 数据属性相当于smallTalk中的实例变量,C++中的数据成员.数据 ...

  6. tracert路由跟踪命令分析判断

    可能有的会使用路由跟踪命令 ,可是却看不太明确显示出来的结果.结合我的来说明一下. (1)tracert命令介绍 tracert是路由跟踪命令,通过该命令的返回结果,能够获得本地到达目标主机所经过的网 ...

  7. Java原型模式之基础

    一.是什么? 定义:用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象.(官方定义) 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype. Prototype类须要 ...

  8. QML性能

    1) Limit JavaScript a) inline JavaScript:  内联的JavaScript方法;   1. 将js方法放置在Element内部;  2. 尝试将语句写在一行内; ...

  9. Linux实现字符设备驱动的基础步骤

    Linux应用层想要操作kernel层的API,比方想操作相关GPIO或寄存器,能够通过写一个字符设备驱动来实现. 1.先在rootfs中的 /dev/ 下生成一个字符设备.注意主设备号 和 从设备号 ...

  10. BGP拓扑错误模拟配置

    R1配置 --------------------------------------------- version 5.20, ESS 2207P45# sysname RT1# super pas ...