彩虹渐变色 的 Swift 实现

首先非常感谢大家的支持与关注。《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测试的时候会提示运算符错误。

推测是数据类型的问题,但是具体是什么原因没有调试成功,还请各位不吝赐教。

彩虹渐变色 的 Swift 实现

时间: 2024-12-28 12:44:27

彩虹渐变色 的 Swift 实现的相关文章

Ardunio控制RGB的LED灯显示彩虹渐变色.

由于我使用的是共阴极的RGB LED,如果你的是共阳极的,接线的时候要注意一下. 其他没什么不同 //定义RGB色彩的输出I/O int redPin = 11; int greenPin = 10; int bluePin = 9; //标记颜色变化的方式,增加值还是减小值 bool redBool =false; bool greenBool=true; bool blueBool=false; //颜色值,初始化为0,127,255 int redVal =0; int greenVal=

Swift: 打造滑动解锁文字动画

最近木事,找出来玩了玩facebook的paper.到处都是那个"slide to unlock your phone"的效果啊.忽闪忽闪的小有点炫酷的感觉.于是准备研究一下.木有想到的是居然可以用CAGradientLayer和一个小小的动画就可以实现这个效果."滑动解锁"的效果: 当然啦,首先你需要显示出这个"滑动解锁"的文本.这里咱们就用一个简单的UILabel来解决这个问题. var textExampleLabel: UILabel!

swift:打造你自己的折线图

看到苹果Health里的折线图了吗.我们就是要打造一个这样的折线图.没看过的请看下图. 我们的主题在于折线图本身.其他的包括步数.日平均值等描述类的内容这里就不涉及了. 首先观察,这个图种包含些什么组成部分.线?这个太明显都看见了.还有每个节点的小圆圈,还有折线图里从上到下的渐变.这里是白色的从上到下逐渐透明的效果.还有一条虚线.这个暂时先不考虑了.你能绘制出来最下面的x轴标尺,绘制个虚线还不是小菜? 为什么说是绘制呢,因为显然我们不想用一个UIView把像素设置为1,背景色设置为UIColor

Android进阶——自定义View之自己绘制彩虹圆环调色板

引言 前面几篇文章都是关于通过继承系统View和组合现有View来实现自定义View的,刚好由于项目需要实现一个滑动切换LED彩灯颜色的功能,所以需要一个类似调色板的功能,随着手在调色板有效区域滑动,LED彩灯随即显示相应的颜色,也可以通过左右的按钮,按顺序切换显示一组颜色,同时都随着亮度的改变LED彩灯的亮度随即变化,这篇基本上把继承View重绘实现自定义控件的大部分知识总结了下(当然还有蛮多没有涉及到,比如说自适应布局等),源码在Github上 一.继承View绘制自定义控件的通用步骤 自定

swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练

最近准备将项目转化为OC与swift混合开发,试着写一个swift音乐播放器的demo,体会到了swift相对OC的优势所在,废话不多说,先上效果图: ps:身为杰伦的铁粉,demo的主题必须跟杰伦有关,哈哈!而且自我感觉我有转型UI的天赋,有木有? 一.导入OC文件 创建好swift项目之后,导入OC工具类文件,Xcode会自动生成桥接文件 打开这个文件,在开头导入OC工具类的头文件,就可以调用OC工具类了 // // Use this file to import your target's

Swift语言iOS开发:CALayer十则示例(转)

http://mobile.51cto.com/iphone-469498.htm 如你所知,我们在iOS应用中看到的都是视图(view),包括按钮视图.表视图.滑动条视图,还有可以容纳其他视图的父视图等. 但你或许不知道在iOS中支撑起每个视图的是一个叫做"图层(layer)"的类,确切地说是CALayer. 本文中您会了解CALayer及其工作原理,还有应用CALayer打造酷炫效果的十则示例,比如绘制矢量图形.渐变色,甚至是粒子系统. 本文要求读者熟悉iOS应用开发和Swift语

[Swift通天遁地]八、媒体与动画-(5)使用开源类库绘制文字、图形、图像、图表、SVG

本文将演示如何通过金刚鹦鹉的类库,进行文字.图像.图表和图形的绘制. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '9.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod "Macaw" 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文件

Apple Swift编程语言新手教程

Apple Swift编程语言新手教程 作者: 日期: gashero 2014-06-03 FROM:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的

swift 深入理解Swift的闭包

我们可用swift的闭包来定义变量的值. 先来一个简单的例子大家先感受感受. 定义一个字符串的变量的方法: 直接赋值 var str="JobDeer" 还可以用闭包的方式定义: var str:String={ return "JobDeer" }() 闭包还可以这么定义,省略了等号和括号: var str:String{ return "JobDeer" } 闭包中可以定义get方法. var str:String{ get{ return