UIColor,CGColor,CIColor三者的区别和联系

合集下载

ui设计色彩知识点

ui设计色彩知识点

ui设计色彩知识点UI设计是一项综合的创意工作,其中色彩在设计中起着至关重要的作用。

色彩能够传达情感、引导用户的注意力和加强品牌形象。

在UI设计中,掌握一些色彩知识是非常重要的。

本文将介绍一些常用的UI设计色彩知识点,帮助您在设计过程中做出更好的决策。

一、色轮和色彩基础色轮是用来表示色彩关系的工具。

最常见的色轮有三种:RGB色轮、CMYK色轮和RYB色轮。

在UI设计中,最常用的是RGB色轮,它由红、绿、蓝三原色组成。

这些颜色可以通过调整它们的亮度和饱和度来制造千变万化的效果。

色彩基础包括颜色的属性和色彩搭配原则。

颜色的属性包括色相、明度和饱和度。

色相指的是色彩的种类,如红、蓝、绿等;明度指的是色彩的明暗程度;饱和度指的是色彩的纯度。

正确理解这些属性可以帮助我们更好地使用和搭配色彩。

色彩搭配原则包括对比、互补、类比、渐变和单色等。

对比原则指的是使用色相、明度和饱和度之间明显差异的颜色进行搭配;互补原则指的是使用色轮上互为补色的颜色进行搭配;类比原则指的是使用色轮上相近的颜色进行搭配;渐变原则指的是使用颜色的明度或饱和度进行逐渐变化的效果;单色原则指的是只使用一种颜色的不同明度和饱和度进行搭配。

二、色彩情感和品牌形象色彩有着不同的情感表示和符号意义,在UI设计中能够通过巧妙运用来表达品牌形象和引发用户的情感共鸣。

红色代表激情、能量和力量。

它是一个非常强烈的色彩,适合用在需要吸引用户注意力的地方。

例如,许多快餐连锁店会采用红色来传达其快速便捷的形象。

蓝色代表冷静、可靠和专业。

它是一个非常稳定和安全的色彩,适合用在金融、科技等行业的设计中。

例如,许多银行和互联网公司都会使用蓝色来强调其可靠和专业的形象。

绿色代表平衡、健康和生态。

它是一个非常和谐和安全的色彩,适合用在与大自然和环境有关的设计中。

例如,很多健康食品和有机产品的包装都会采用绿色来传达其健康和环保的形象。

黄色代表活力、快乐和创新。

它是一个非常明亮和积极的色彩,适合用在需要吸引用户注意力和表达创新的设计中。

【推荐下载】cgColor与UIColor的差异[重复]

【推荐下载】cgColor与UIColor的差异[重复]

cgColor 与UIColor 的差异[重复]cgColor 与UIColor 的差异[重复][英]Difference between cgColor and UIColor [duplicate]in my project I’m having an array of colors. Should I use UIColor as the underlying type or cgColor?在我的项目中,我有一系列的颜色。

我应该使用UIColor 作为底层类型还是cgColor?Are there any best practices?有什么最佳实践吗?1CGColorCGColorCGColor is the fundamental data type used internally by Core Graphics to representcolors. CGColor objects, and the functions that operate on them, provide a fast andconvenient way of managing and setting colors directly, especially colors that are reused(such as black for text). CGColor is derived from CFTypeRef and inherits the properties that all Core Foundation types have in common. CGColor 是核心图形内部用来表示颜色的基本数据类型。

CGColor 对象及其操作函数提供了一种快速、方便的方式来直接管理和设置颜色,特别是重用的颜色(例如文本中的黑色)。

CGColor 派生自CFTypeRef,继承了所有核心基础类型的共同属性。

ui设计基础知识

ui设计基础知识

ui设计基础知识UI设计基础知识UI(User Interface)设计是指对人与机器之间进行信息交流的界面进行设计,以提高用户体验的过程。

UI设计是一门综合性的学科,包括了图形设计、用户体验设计、交互设计以及前端开发等多个方面。

本文将从UI设计的基本概念、设计原则以及常用工具等方面进行详细介绍。

一、UI设计的基本概念1. 用户体验(User Experience):用户体验是指用户在使用产品或服务过程中的主观感受。

UI设计要着重考虑用户的需求与心理感受,通过合理的布局、吸引人的视觉效果以及友好的操作方式来提升用户体验。

2. 用户界面(User Interface):用户界面是用户与系统之间进行交互和信息传递的界面。

好的用户界面应该具有简洁、直观的特点,能够准确地传达信息并引导用户完成操作。

3. 色彩选择:色彩是UI设计中非常重要的要素之一,能够直接影响用户的情绪和体验。

色彩需要根据产品/服务的定位和目标用户来选择,同时要注意色彩的搭配和对比,以提高可读性和视觉效果。

4. 字体选择:字体也是UI设计中需要注意的要素之一。

字体应该选择简洁明了、易于阅读的字体,避免使用过多的字体和字号,以保持一定的统一性和连贯性。

5. 布局:好的布局可以让用户更容易找到所需信息并完成相应操作。

布局应该考虑信息的层次结构,采用合适的分区和间距,保持整体的平衡和美观。

二、UI设计的设计原则1. 简洁性:UI设计应该以简洁为主,尽量减少冗余的元素和功能,让用户能够迅速找到所需信息。

2. 一致性:UI设计在整体结构和样式上要保持一定的一致性,这样可以避免用户在不同页面之间产生困惑。

3. 可读性:UI设计应该注重文字的可读性,字体大小、字体颜色和背景的对比度都要保持合适,以便用户更容易阅读信息。

4. 可导航性:UI设计要保证用户能够迅速、准确地找到所需的功能或信息,合理的导航结构和交互方式是实现这一目标的关键。

5. 反馈性:UI设计应该及时、准确地给予用户反馈,让用户知道自己的操作是否成功,以提高用户的满意度和信任感。

ui设计知识点总结

ui设计知识点总结

ui设计知识点总结UI设计(User Interface Design),即用户界面设计,是用户与产品进行交互时的视觉和操作层面的设计,旨在为用户提供良好的视觉体验,使用户能够轻松、高效地操作产品。

本文将总结一些UI设计的重要知识点,帮助读者更好地理解UI设计的核心要素和技巧。

一、色彩搭配色彩在UI设计中占据重要地位,它能够直接影响用户的情绪和感知。

在进行色彩搭配时,需要考虑以下几个方面:1. 色彩的基本原理:包括色轮、明度、饱和度等基本概念,了解这些原理可以帮助设计师更好地选择和搭配色彩。

2. 色彩的象征意义:不同的颜色具有不同的象征意义,例如红色代表热情、蓝色代表冷静等,设计师可以根据产品的品牌和定位选择合适的色彩来传递特定的信息和情感。

3. 色彩的对比度:对比度能够增强设计的可读性和视觉效果,设计师需要确保背景色和文字色之间有足够的对比度,以确保用户能够清晰地识别和阅读内容。

二、布局与排版良好的布局与排版可以有效提升用户对产品界面的理解和操作体验。

以下是几个重要的布局与排版原则:1. 视觉层次:将界面元素按照重要性和层次分为不同的组块,通过大小、颜色、形状等元素的变化来营造层次感,提高用户对界面信息的理解和关注度。

2. 对齐与间距:保持界面元素的对齐和间距一致性,以增强整体的视觉稳定性和统一感。

3. 字体选择与排版:选择适合产品风格和品牌形象的字体,并进行合理排版,确保文字内容的清晰度和可读性。

4. 响应式布局:考虑到用户在不同设备上的使用,设计师需要进行响应式布局,使得界面在不同分辨率和屏幕尺寸下都能够良好地展示和操作。

5. 空白处理:合理运用空白和留白,避免界面过于拥挤,让用户能够更清晰地理解界面结构和内容。

三、图标与按钮设计图标和按钮是用户与产品进行交互的重要元素,设计师应该注重其设计和使用。

以下是几个图标与按钮设计的要点:1. 直观易懂:图标和按钮的设计应该尽量简化,并遵循用户的习惯和直觉,使用户能够快速地理解其功能。

UIColor,CGColor,CIColor三者间的区别和联系

UIColor,CGColor,CIColor三者间的区别和联系

UIColor,CGColor,CIColor三者的区别和联系最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系。

下面我们分别看看它们三个的概念:一、UIColorUIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。

UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)。

此外UIColor还有两个重要的属性:一个是CGColor,一个是CIColor(5.0之后添加)。

这两个属性就可以把UIColor,CGColor,CIColor三个对象联系起来了,后面会详细介绍这三者之间的转换。

二、CGColorCGColor主要用于CoreGaphics框架之中,CGColor其实是个结构体,而我们通常在使用的CGColor的时候使用的是它的引用类型CGColorRef。

CGColor主要由CGColorSapce 和Color Components两个部分组成,同样的颜色组成,如果颜色空间不同的话,解析出来的结果可能会有所不同。

这就像我们在处理图片数据的时候,如果把RGBA格式当成BGRA格式处理的结果可想而知。

在Quartz 2D中CGColor常用来设置context的填充颜色,设置透明度等。

三、CIColorCIColor主要是用于和Core Image框架中其他类,比如CIFilter,CIContext以及CIImage。

今天我们主要关心的颜色值部分,CIColor中颜色值的范围是0.0-1.0之间,0.0代表该颜色分量为最小值,1.0代表改颜色分量为最大值。

ui设计专业知识点

ui设计专业知识点

ui设计专业知识点UI(User Interface)设计是指用户界面设计,是一个关于人机交互的设计学科。

它主要聚焦于用户在产品或系统上的使用体验,并通过合理的可视化和交互设计提升用户满意度。

下面将介绍一些UI设计的专业知识点。

一、色彩搭配色彩对于UI设计来说非常重要,因为色彩可以传达情感、引导用户注意力、增加产品的吸引力等。

在色彩搭配方面,需要了解色彩搭配的原理和常用的色彩搭配方案。

例如,主色调与辅助色彩的搭配、冷暖色调的运用等。

二、界面布局界面布局是指在设计中对于元素的排列和组织方式。

合理的界面布局可以提高用户的使用效率和体验,需要考虑信息结构、模块的划分、内容的呈现等因素。

三、字体选择字体不仅仅是文字的表现形式,也是传递品牌形象和产品特点的重要方式之一。

在UI设计中,需要选择适合的字体,包括字体的风格、字重的选择、字号的合理搭配等。

四、图标与按钮设计图标和按钮在用户界面中经常出现,它们可以帮助用户快速理解功能和操作方式。

UI设计师需要具备设计出简洁、易识别、符合品牌风格的图标和按钮的能力。

五、交互设计交互设计是UI设计中至关重要的一环,它关注用户与产品之间的互动体验。

合理的交互设计可以提升用户的满意度和使用效率,需要考虑用户流程、界面反馈、操作反馈等方面的设计。

六、响应式设计响应式设计是指根据用户的设备和屏幕尺寸自动适应不同的布局和功能。

UI设计师需要了解不同设备的特点和响应式设计的原理,以确保在不同终端上都有良好的用户体验。

七、视觉设计原则视觉设计原则是指在UI设计中应用的一些基本原则,包括对称与不对称、重复与鲜明对比、平衡与层次感等。

这些原则可以帮助设计师在视觉上呈现出整齐、有序和美观的界面。

八、品牌识别品牌识别是指在UI设计中体现品牌形象和特点的设计。

UI设计师需要了解企业或产品的品牌定位和形象,将其融入到界面设计中,以提升品牌的认知度和用户对品牌的好感度。

九、用户研究与测试用户研究与测试是UI设计过程中不可忽视的环节。

设计原则知识:设计原则——UI界面颜色的选择

设计原则知识:设计原则——UI界面颜色的选择设计原则——UI界面颜色的选择UI界面设计是现代互联网应用和电商综合营销的重要组成部分,而颜色作为UI界面设计的一个重要元素,是能够影响用户体验和购买决策的关键因素之一。

因此,UI界面颜色的选择是一个非常重要的问题。

如何选择UI界面颜色,使得UI的设计达到视觉上的舒适、美观、时尚和实用?本文将结合一些设计原则和实际案例,探讨UI界面颜色的选择方法和技巧。

设计原则1.色彩搭配原则色彩搭配原则是UI界面颜色选择的重要指导原则之一,包括了主色搭配、辅色搭配和中性色搭配三类叠加配色方法。

应用色彩搭配原则,可以让UI界面展现出更加和谐、统一、明快的视觉效果。

主色搭配:主色是UI界面颜色设计的最重要元素之一,它会直接影响到用户对于该应用的第一印象和品牌认知。

主色不仅需要符合应用定位和用户群体的偏好,还需要在不少于三个颜色的取舍中做出合理的选择。

如小红书使用的橘红色和冰激凌蓝色,呼应了该应用针对于女性和时尚、养生的定位要求。

辅色搭配:辅色是为了强化主色和丰富UI界面视觉效果而设置的。

辅色一般使用在按钮、标签和图标等元素的设计中。

辅色的选择需要注意避免颜色过多或太过过杂,需要将色彩关系的平衡和协调做到最佳化。

中性色搭配:中性色是一种提高UI界面色调配比的必不可少的搭配技巧,它能够起到分割和衬托的作用。

常见的中性色有黑色、白色、灰色和米白色等。

在UI界面中使用适当的中性色搭配,可以调整整个UI界面的表现氛围和整体感受。

2.色彩心理学原则色彩心理学原则是利用色彩对人们心理和情感等反应的科学研究,这些反应包括情绪和行为等。

在UI界面设计中,利用色彩心理学原则,可以通过色彩的属性和特性,增强用户对应用的关注度和认知度。

红色:红色是充满活力和激情的颜色,它鲜艳而明亮,往往在UI界面中作为吸引用户注意和强化记忆印象等用途。

在商业应用中,红色通常用来表达销售促销、特价优惠或新品上市等信息。

color ui用法

color ui用法Color UI是一款用于前端开发的UI框架,它提供了丰富多样的颜色组合和样式,使得网页设计更加简便和美观。

在本文中,我们将探讨Color UI的用法,并提供一些实际应用的示例。

一、Color UI简介Color UI是一套基于Vue.js的前端界面库,它的设计理念是简单易用、丰富多样。

它提供了一套漂亮的颜色调色板,使得网页设计者可以轻松地选择合适的配色方案。

同时,Color UI还提供了各种常见的UI组件,包括按钮、输入框、标签等,可以大大缩短开发时间。

二、Color UI的安装和使用要使用Color UI,首先需要在项目中引入它。

可以通过npm安装,也可以直接下载使用。

一旦引入成功,就可以在项目中使用Color UI 提供的各种组件和样式。

在使用Color UI之前,需确保已经安装好Vue.js。

在Vue.js的项目中,可以通过以下步骤引入Color UI:1. 在项目文件中找到package.json文件,确保已经添加了使用Color UI的依赖项。

2. 在需要使用Color UI的组件中,引入对应的Color UI组件。

3. 在组件的template部分,使用Color UI提供的样式和组件。

以下为一个简单的示例:```<template><div><cu-button color="primary">提交</cu-button><cu-input placeholder="请输入用户名"></cu-input> </div></template><script>import { CuButton, CuInput } from 'color-ui'export default {components: {CuButton,CuInput}}</script>```在上述示例中,我们使用了Color UI提供的`CuButton`和`CuInput`组件,分别创建了一个提交按钮和一个输入框。

调色比色基础:色彩知识

色彩系统色彩系统依赖于设计者使用的媒介。

当绘画的时候,艺术家有大量的颜料需要选择,色彩是通过减色法来实现的。

而当设计师使用电脑等来设计作品时候,色彩是由加色法来获得。

减色当使用颜料或者使用涂料等方式时候,我们使用减色法。

减色法意味着由白色开始,随色色彩的叠加,直到黑色。

CMYK 色彩模型用于减色法这个色轮用于颜料色彩搭配--减色法加色如果你使用电脑来处理色彩,那么电脑上的色彩是由加色法呈现的。

加色法意味着色彩是从黑色开始,随着色彩的叠加,逐渐变亮,最后成为白色。

这是RGB色彩模型表示加色法,白色由R红色,G绿色,蓝色叠加而成。

这个色轮用于加色。

色环理论详解色环理论详解色环又称作为色轮,是种按照色相把色彩排列的呈现方式。

当我们开始进行色环排列时, 第一步就是需要把原色按照等距关系排列。

以下色彩组成了完整的色环上图为原色(Primary Colors),等距排列,分别是红、黄、蓝。

上图为间色,或者称为次色( Secondary Colors),由三原色两两混合产生,分别是绿、橙、紫。

上图为三级色(TERTIARY COLORS),由原色和间色两两混合产生,分别是黄橙、红橙、红紫、蓝紫、黄绿、蓝绿(原为“蓝紫”由配色网友xxhehe勘误)以下是色环的一些其他知识互补色(Complementary Colors),也被称为补色,是色环上两个相对的颜色。

上图为补色,红色和绿色是互补色。

类似色(Analogous Colors),是色环色上距离相近的颜色上图几红色和紫色和红紫色,蓝紫色为类似色。

色环中根据亮度又分为积极色(Active colors,也可以称为暖色)和消极色(Passive colors也可以叫做冷色),积极色表现出活跃,积极的一面,消极色则相反。

如上图:红色和黄色属于积极色(暖色),蓝色和绿色属于消极色(冷色)互补色详解我们可以通过观察色环来理解色彩之间的关系,并且进行色彩搭配。

比如类似色在色环当中距离较近,所以它们之间的搭配会有画面和谐,冲突少的特点。

颜色空间知识点总结初中

颜色空间知识点总结初中颜色空间是指用于描述和表示颜色的数学模型。

在计算机图形学、摄影和视觉技术中,颜色空间是非常重要的概念,对于理解和处理图像有着重要的作用。

以下是关于颜色空间的一些知识点总结:1. RGB颜色空间RGB颜色空间是最常见的颜色空间之一,它使用红色(R)、绿色(G)和蓝色(B)三个分量来表示任意颜色。

每个分量的取值范围一般是0~255。

通过不同的组合,可以表示出数百万种颜色。

RGB颜色空间在计算机图形学和摄影中被广泛应用。

2. CMYK颜色空间CMYK颜色空间是一种用于印刷的颜色模型,它使用青色(C)、品红(M)、黄色(Y)和黑色(K)四个颜色分量来表示颜色。

这种颜色空间通常用于印刷行业,因为它可以更好地模拟出印刷颜色的效果。

3. HSL和HSV颜色空间HSL颜色空间使用色相(H)、饱和度(S)和亮度(L)三个分量来表示颜色,它更加直观地描述颜色。

而HSV颜色空间则使用色相(H)、饱和度(S)和明度(V)来表示颜色,它更适合于计算机图形学中的图像处理。

4. LAB颜色空间LAB颜色空间是一种基于人眼感知的颜色模型,它分别使用亮度(L)、红绿(A)和蓝黄(B)三个分量来表示颜色。

LAB颜色空间通常用于颜色校正和颜色匹配等领域。

5. 颜色空间转换在图像处理中,常常需要进行不同颜色空间之间的转换。

比如,将RGB颜色空间转换为HSV颜色空间可以更方便地调整亮度和饱和度。

颜色空间转换是一项复杂的计算工作,需要运用数学知识和计算机算法来实现。

6. 颜色空间的应用颜色空间在图像处理、计算机视觉和计算机图形学中有着广泛的应用。

比如,在图像处理中,可以利用颜色空间来进行颜色校正、颜色分割、颜色识别等任务。

在计算机视觉中,颜色空间可以用于目标检测、图像分割和物体识别等领域。

在计算机图形学中,颜色空间可以用于渲染、着色和光照等方面。

总之,颜色空间是图像处理和计算机视觉中的重要概念,对于理解和处理图像有着重要的作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UIColor,CGColor,CIColor三者的区别和联系最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系。

下面我们分别看看它们三个的概念:一、UIColorUIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。

UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)。

此外UIColor还有两个重要的属性:一个是CGColor,一个是CIColor(5.0之后添加)。

这两个属性就可以把UIColor,CGColor,CIColor三个对象联系起来了,后面会详细介绍这三者之间的转换。

二、CGColorCGColor主要用于CoreGaphics框架之中,CGColor其实是个结构体,而我们通常在使用的CGColor的时候使用的是它的引用类型CGColorRef。

CGColor主要由CGColorSapce和Color Components两个部分组成,同样的颜色组成,如果颜色空间不同的话,解析出来的结果可能会有所不同。

这就像我们在处理图片数据的时候,如果把RGBA格式当成BGRA格式处理的结果可想而知。

在Quartz 2D中CGColor常用来设置context的填充颜色,设置透明度等。

1、如何创建一个CGColor,最常用的函数是CGColorCreate,该函数有两个参数:1) colorspace,指定CGColor对应的颜色空间,Quartz就会retain该对象,因此调用完之后你就可以安全的释放该对象。

2) components,一个CGFloat的数组,该数组的元素个数是指定色彩空间包含的颜色分量数n,加上对应的alpha值。

该函数该返回一个新创建的CGColorRef,当我们不再使用该对象的时候使用CGColorRelease函数释放该对象。

2、获取CGColor的数据在我们创建的时候传入两个重要的参数进去,当我们获取到了CGColorRef以后当然就可以拿到对应的ColorSpace以及Components。

1) 获取ColorSpace通过CGColorGetColorSpace函数我们可以获取到当前CGColorRef对应的ColorSpace,该函数只接受一个参数就是你要获取ColorSpace的CGColorRef。

下面请看一个简单的例子:CGColorRef cgColor = [UIColor redColor].CGColor;CGColorSpaceRef colorSpace = CGColorGetColorSpace(cgColor);NSLog(@"color space: %@", colorSpace);2) 获取Color Components要获取到CGColorRef对应的颜色值,我们需要用到CGColorGetNumberOfComponents和CGColorGetComponents两个函数。

我们先来看看两个函数的函数原型:size_t CGColorGetNumberOfComponents (CGColorRef color);const CGFloat * CGColorGetComponents (CGColorRef color);第一个函数是获得CGColorRef的中包含的颜色组成部分的个数,第二个函数就是获取实际的颜色组成部分的数组,下面看一个小例子:NSUInteger num = CGColorGetNumberOfComponents(cgColor);const CGFloat *colorComponents = CGColorGetComponents(cgColor);for (int i = 0; i < num; ++i) {NSLog(@"color components %d: %f", i, colorComponents[i]);}三、CIColorCIColor主要是用于和Core Image框架中其他类,比如CIFilter,CIContext以及CIImage。

今天我们主要关心的颜色值部分,CIColor中颜色值的范围是0.0-1.0之间,0.0代表该颜色分量为最小值,1.0代表改颜色分量为最大值。

其中alpha值的范围也是0.0到1.0之间,0.0代表全透明,1.0代表完全不透明,同时CIColor的颜色分量通常都是没有乘以alpha值。

我们可以使用initWithCGColor:函数,通过CGColor创建一个CIColor。

其中传入的CGColorRef对象可以使任何任何颜色空间,但是Core Image框架会在传入filter kernel之前把所有的颜色空间转换到core image工作颜色空间。

core image工作颜色空间使用三个颜色分量加上一个alpha分量组成(其实就是kCGColorSpaceDeviceRGB),后面的例子中我们验证这一点。

四、UIColor,CGColor,CIColor的区别和联系1、UIColor的两个属性CGColor,CIColorUIColor的CGColor总是有效的,不管它是通过CGColor,CIColor,还是其他方法创建的,CGColor属性都总是有效的;但是CIColor属性就不总是有效的,只有当UIColor是通过CIColor 创建的时候,他才是有效的,否则访问该属性将会抛出异常,下面照旧来一个小例子:// test init uicolor with CGColorUIColor *color = [UIColor colorWithCGColor:[UIColor whiteColor].CGColor];// CGColor property is always validNSLog(@"CGColor from UIColor %@", color.CGColor);// don't use CIColor property// This property throws an exception if the color object was not initialized with a Core Image color.NSLog(@"CIColor from UIColor %@", color.CIColor); // crush2、UIColor使用CGColor初始化当UIColor使用CGColor初始化的时候,所有CGColorRef包含的信息,都会被原封不动的保留,其中就包括Color space,而且通过下面的小例子我们还可以看到如果使用CGColor 初始化UIColor的时候,UIColor其实是直接保留了一份这个CGColorRef对象。

例子如下:// test kCGColorSpaceDeviceCMYKCGColorSpaceRef cmykSpace = CGColorSpaceCreateDeviceCMYK();CGFloat cmykValue[] = {1, 1, 0, 0, 1}; // blueCGColorRef colorCMYK = CGColorCreate(cmykSpace, cmykValue);CGColorSpaceRelease(cmykSpace);NSLog(@"colorCMYK: %@", colorCMYK);// color with CGColor, uicolor will just retain itUIColor *color = [UIColor colorWithCGColor:colorCMYK];NSLog(@"CGColor from UIColor: %@", color.CGColor);3、UIColor使用CIColor初始化下面我们讨论一下当使用CIColor来初始化一个UIColor的时候,再去访问UIColor的CGColor属性的时候,我们会发现CGColor的color Space和设置CIColor的color space的是不完全一样的,在这个过程中CIColor会为我们做一个转换。

下面我们分别看看使用kCGColorSpaceDeviceGray,kCGColorSpaceDeviceRGB,kCGColorSpaceDeviceCMYK三种颜色空间来初始化一个CIColor的时候,再去使用该CIColor去初始化一个UIColor,然后在去访问其CIColor属,CGColor属性,查看颜色空间并打印颜色信息。

1) 使用kCGColorSpaceDeviceGray初始化CIColor首先看代码:// test kCGColorSpaceDeviceGrayNSLog(@"CGColor white color:%@", [UIColor whiteColor].CGColor);CIColor *ciColor = [CIColor colorWithCGColor:[UIColor whiteColor].CGColor];NSLog(@"cicolor: %@", ciColor);NSLog(@"cicolor colorspace: %@", ciColor.colorSpace);color = [UIColor colorWithCIColor:ciColor];NSLog(@"color %@", color);// Core Image converts all color spaces to the Core Image working color// space before it passes the color space to the filter kernel.// kCGColorSpaceDeviceGray ---> kCGColorSpaceDeviceRGBNSLog(@"cicolor from UIColor: %@", color.CIColor);NSLog(@"cicolor's colorspace: %@", color.CIColor.colorSpace);NSLog(@"color's CGColor: %@", color.CGColor);通过运行程序,我们看出来,如果使用一个kCGColorSpaceDeviceGray的颜色空间的CGColor来初始化CIColor的时候,我们可以看到CIColor的色彩空间一直是kCGColorSpaceDeviceGray,通过访问UIColor的CIColor属性,我们可以看到其颜色空间仍然是kCGColorSpaceDeviceGray,但是当访问UIColor的CGColor属性的时候,通过打印可以发现其色彩空间已经转变成了kCGColorSpaceDeviceRGB空间了,而颜色值也正确的从原来的颜色空间转换到了新的颜色空间。

相关文档
最新文档