首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在UIImage上制作一种透明的颜色?

在 iOS 开发中,要在 UIImage 上制作一种透明的颜色,可以使用以下步骤:

  1. 首先,导入所需的框架:
代码语言:swift
复制
import UIKit
  1. 创建一个新的 UIImage 类,并在其中实现一个方法,该方法将接受一个 UIImage 对象和一个透明度值作为参数,并返回一个新的 UIImage 对象,其中包含透明颜色。
代码语言:swift
复制
extension UIImage {
    func imageWithTransparentColor(opacity: CGFloat) -> UIImage? {
        let rect = CGRect(origin: .zero, size: size)
        UIGraphicsBeginImageContextWithOptions(rect.size, false, scale)
        let context = UIGraphicsGetCurrentContext()
        context?.setBlendMode(.multiply)
        let transparentColor = UIColor(white: 0, alpha: opacity)
        context?.setFillColor(transparentColor.cgColor)
        context?.fill(rect)
        draw(in: rect, blendMode: .multiply, alpha: 1)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage
    }
}
  1. 在需要使用透明颜色的地方调用这个方法,并传入透明度值。例如,如果要将图片的透明度设置为 0.5,可以这样调用:
代码语言:swift
复制
let image = UIImage(named: "myImage.png")
let transparentImage = image?.imageWithTransparentColor(opacity: 0.5)

这样,就可以在 UIImage 上制作一种透明的颜色了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IOS开发系列——启动页专题【整理,部分原创】

启动页专题 总述: 两种方式,一种是使用系统自带,按规则定义启动图片名称即可,显示为1秒,要想延长时间,用[nsthread sleepForTimeInterval:5.0] ,另一种就是自定义uiivew...Default.png(不推荐) 320x480或者320x460 Default@2x.png iPhone4启动图片640x960或者640x920 为了在iPad使用上述启动画面,你还需要在...pageControl.numberOfPages =3; //设置选中页数 pageControl.currentPage =0; //设置未选中点颜色...但是这个窗口默认背景色是磨砂不透明,因此还需要把它背景色设为透明。这样看起来就像是全屏遮罩一样,但是由于系统不认为新View是全屏,所以上一个View也不会被unload。...调整 alpha值 iOS 模糊半透明效果实现 http://my.oschina.net/kevinvane/blog/129707 6 参考链接 IOS 启动页面制作 http://my.oschina.net

1.7K10

RunLoop总结:RunLoop应用场景(三)滚动视图流畅性优化

简单说明一下,就是屏幕显示所有东西,都是通过一个个像素点呈现出来。而每一个像素点都是通过三原色(红、绿、蓝)组合呈现出不同颜色,最终才是我们看到手机屏幕内容。...每一个像素点颜色计算是这样: R = S + D * (1 - Sa) 结果颜色 是子视图这个像素点颜色 + 父视图这个像素点颜色 * (1 - 子视图透明度) 当然,如果有两个兄弟视图叠加...如果两个兄弟视图重合,计算是重合区域像素点: 结果颜色 是 上面的视图这个像素点颜色 + 下面这个视图该像素点颜色 * (1 - 上面视图透明度) 只有当透明度为1时,上面的公式变为R =...每一个像素点是由三原色组成,例如父视图颜色透明度是(Pr,Pg,Pb,Pa),子视图颜色颜色透明度是(Sr,Sg,Sb,Sa),那么我们计算这个重合区域某像素点颜色,需要先分别计算出红、绿、蓝...但是,如果父视图透明Pa 不等 1,那么我们需要将这个结果颜色当做一个整体作为子视图颜色,再去与父视图组合计算颜色,如此递推。 所以设置不透明时,可以为GPU节省大量工作,减少大量消耗。

2.1K41

【IOS开发基础系列】Navigation页面导航专题

self.navigationItem setBackBarButtonItem: backItem]; 【iOS开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条文字和按钮以及各种跳转...://www.cnblogs.com/PleaseInputEnglish/p/3498032.html 2.5.2 导航条设置为半透明         将NavigationBar设置透明(仅将指定视图控制器进行透明处理...    } else {        //进入其他视图控制器        self.navigationController.navigationBar.alpha = 1;        //背景颜色设置为系统默认颜色...    方法一:(自定义视图方法,一般人也会采用这样方式)         就是在导航向上添加一个titleView,可以使用一个label,再设置label背景颜色透明,字体什么设置就很简单了...NSTextAlignmentCenter; titleLabel.text = @"新闻"; self.navigationItem.titleView = titleLabel;     方法二:(在默认显示标题中直接修改文件大小和颜色也是可以

34420

Metal入门教程(八)Metal与OpenGL ES交互

参数(第七个)需要特别注意,这里格式要和CVPixelBufferCreate方法pixelFormatType(第四个)对应,否则会出现图片颜色异常情况。...遇到问题 1、OpenGL ES渲染图片不透明 按照设计,左上角是UIKit渲染图片,右上角是OpenGL ES渲染图片,中间是Metal渲染图片,并UIKit和OpenGL ES渲染区域应该是透明...首先猜测点是因为图片本身不透明,导致底为黑色;这个通过UIImageView渲染效果排除; 其次猜测是OpenGL ES渲染时候,把透明部分设置成黑色;下面一段是shader 代码: varying...但这个并不是问题所在,因为这里只决定三角形区域内像素点颜色,黑色部分为背景,并不受shader影响。 通过上面的猜测,发现问题可能在glClearColor设置了不透明颜色。...回忆下OpenGL ES教程里内容,苹果用CAEAGLLayer来承载OpenGL ES内容,最终渲染结果都是CAEAGLLayer颜色缓冲区数据。

2.3K10

iOS状态栏设置

statusBar颜色 在navigationBaraddSubView该UIView即可 UINavigationBar设置 上面说了状态栏 这里顺便把UINavigationBar也说了 我配置...//设置背景色(不透明时没用,因为barTintColor在backgroundColor一层) appear.backgroundColor = UIColor(red: 52/255, green...: UIBarMetrics.Default) appear.shadowImage = UIImage(); //设置左右两侧颜色 appear.tintColor = UIColor.whiteColor...=false也就是不透明时,可以去掉navigationBar下黑线,代码如下 //去掉navigationBar下黑线 appear.setBackgroundImage(UIImage(), forBarMetrics...下黑线,会导致状态栏颜色与navigationBar背景色不同,暂没找到好解决方法 6) 设置navigationBar背景透明方式 跟去黑线方式相同

2.6K11

Swift-图像性能优化

GPU:如果有透明图片叠加,做两个图像透明度之间叠加运算,运算之后生成一个结果,显示到屏幕,如果透明图片叠加很多,运算量就会很大 png格式图片是透明,如果边上有无色地方,那么可以把底下背景透过来...一般指定颜色时候不建议使用透明色,透明色执行效率低 Color Copied Images(图像复制->几乎用不到) 有时候寄宿图片(layer.content)生成是由Core Animation...)但是由于是不透明模式,所以看不到下面的颜色,默认看到了黑色背景。...证明有图层叠加运算,因此,不能采用透明模式。 解决办法:给背景设置一个颜色,使其不显示默认黑色。...这样就可以解决四个角显示黑色问题,并且在混合模式状态下不会再有红色显示,性能可以非常好。 开发过程中,用颜色比用图片性能会高一点。 不到万不得已,View背景色尽量不要设置成透明颜色

1.7K70

NavigationBar&tabBar调色那些事儿1. 导航栏调色那些事儿2. 标签栏TableBar那些事儿

- 这里需要注意是,如果图片传入是nil,依然还会添加默认阴影线。 系统判断是否出现阴影线标准是:是否传入照片。所以我们用[UIImage new]创建了一个空照片(不是nil)。...appearance] setShadowImage:[UIImage new]]; 1.4 改变 TabBar 字体颜色 [UITabBarItem.appearance setTitleTextAttributes...iOS7以后,status bar 背景颜色变成了透明色,而且系统会根据 app颜色自动改变 status bar 字体颜色(黑和白)。...]; 1.8 导航栏透明效果 如果设置成NO,tableView就从状态栏下面开始。...标签栏TableBar那些事儿 2.1 调色 可以完全参考导航栏,几乎雷同。 2.2 关闭半透明效果 一旦关闭标签栏透明效果,控制器view就不会到达屏幕最底部了,而是到了标签栏紧上方。

1.5K50

PPT渐变效果怎么设计制作才精致?

那么,他们是如何被制作出来呢?渐变在ppt设计中,又有什么样应用场景?   如何在 PPT 中创建渐变色。   ...先来说一个最简单方法,直接选中形状,调整其参数即可:   估计95%的人,也就知道这一种方法,但作为旁门左道读者,我想告诉你更多做法,而且,做出来效果也会更加高级。   ...渐变方向和渐变角度其实是一个意思,这个在操作很简单,直接调整角度数值就可以了。   渐变光圈是渐变最重要部分,它包含渐变颜色、位置、透明度和亮度。...我们可以在渐变光圈增加和减少颜色控点,以此来影响渐变效果。   ...02/相近色渐变   如果我们想要制作出高品质渐变色,那么在颜色选择就要非常谨慎了,最好选取相近颜色,或者同一色系颜色

2.9K30

iOS开发UINavigation系列一——导航栏UINavigtionBar

,实际,我们也可以在不使用导航控制器前提下,单独使用导航栏,在UINavigationBar中,也有许多我们可以定制属性,用起来十分方便。...我们也可以设置导航栏风格属性,从iOS6之后,UINavigationBar默认为半透明样式,从上面也可以看出,白色导航栏下面透出些许背景红色。...三、导航栏常用属性和方法         从上面我们可以看到,iOS6后导航栏默认都是半透明,我们可以通过下面的bool值来设置这个属性,设置为NO,则导航栏不透明,默认为YES: @property...(null_resettable, nonatomic,strong) UIColor *tintColor; tintColor这个属性会影响到导航栏左侧pop按钮图案颜色和字体颜色,系统默认是如下颜色...@property(nullable, nonatomic,strong) UIColor *barTintColor; BarTintColor用于设置导航栏背景色,这个属性被设置后,半透明效果将失效

96331

【IOS开发高级系列】异步绘制专题

1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...size_t height, //图片高度 size_t bitsPerComponent, //图片每个颜色bits,比如rgb颜色空间,有可能是5 或者8 == size_t...width:图片宽度像素 height:图片高度像素 bitsPerComponent:每个颜色比特数,例如在rgba-32模式下为8 bitsPerPixel:每个像素总比特数...bytesPerRow:每一行占用字节数,注意这里单位是字节 space:颜色空间模式,例如const CFStringRef kCGColorSpaceGenericRGB 这个函数可以返回一个颜色空间对象...p=9 用UIImage和UIButton画出按钮,使用透明png图片,为什么会出现白边 http://segmentfault.com/q/1010000000095447 JPG、PNG和GIF

1.3K20

iOS开发CoreGraphics核心图形框架之七——图像处理

位图实际只支持矩形区域渲染,但是使用透明技术可以实现任意形状图像渲染。开发者也可以对要进行渲染图像进行旋转、切割等操作。...实际,通过CoreGraphics框架,开发者也可以自己实现一套这样图片加载逻辑,如果在自己应用中,同时需要异步加载小图片很多,也可以设计成下载一张大图后从中截取需要图片。...膜层可以简单理解为将一个图层追加到原图层,但需要注意,图层中颜色为纯黑部分,会按照原图绘制,纯白部分会被完全遮挡,这中间颜色会以特定算法进行alpha值更改。...除了使用图片膜层来对原图像数据进行裁剪处理外,还可以通过颜色数据定义膜层来进行裁剪。这个方法就能加强大了,其可以将图像中某个范围颜色所对应所有区域裁剪出来。...除了上面介绍了两种对图像进行裁剪方法外,CoreGraphics框架中还提供了一种裁剪方式,示例代码如下: -(void)drawRect:(CGRect)rect{ CGContextRef

1.5K10

ios7之后导航栏问题1

我所说设置navigationBar颜色不是通过setBackgroundColor这个方法,因为这个方法设置颜色并不是我们想要颜色,比如我们想设置navigationBar颜色为纯绿色,如果直接使用...,这个UIImage一个分类中方法: + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size { CGRect rect...因为我们设置了navigationBar颜色(或背景图),那么在设置之后navigationBar透明度就发生了变化,从而我们即使不设置navigationBartranslucent属性,navigationBar...透明度也发生了变化从而导致根视图坐标原点发生变化。...如果我们在设置navigationBar颜色后还想要根视图坐标原点不变,那么我们可以在设置颜色时候给它一个透明度,那么此时navigationBartranslucent属性同样为YES即默认值

42420

IOS开发系列——异步绘制专题

异步绘制专题 1 图片处理 1.1 编辑图片几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate...size_t height, //图片高度 size_t bitsPerComponent, //图片每个颜色bits,比如rgb颜色空间,有可能是5或者 8 == size_t...width:图片宽度像素 height:图片高度像素 bitsPerComponent:每个颜色比特数,例如在rgba-32模式下为8 bitsPerPixel:每个像素总比特数 bytesPerRow...:每一行占用字节数,注意这里单位是字节 space:颜色空间模式,例如constCFStringRef kCGColorSpaceGenericRGB这个函数可以返回一个颜色空间对象。...p=9 用UIImage和UIButton画出按钮,使用透明png图片,为什么会出现白边 http://segmentfault.com/q/1010000000095447 JPG、PNG和GIF

1.4K20

iOS学习——Quartz2D学习之UIKit绘制

涉及内容包括:基于路径绘图,透明度绘图,遮盖,阴影,透明层,颜色管理,防锯齿渲染,生成PDF,以及PDF元数据相关处理。Quartz 2D也被称为Core Graphics,缩写前缀为CG。...在IOS无论采用哪种绘图技术(UIKit、Quartz 2D、Core Animation和OpenGL ES),都离不开UIView,绘制都发生在UIView对象区域内。...原则,尽量不要绘制视图全部,以减少绘制带来开销。...触发视图重新绘制动作有如下几种: 当遮挡你视图其他视图被移动或删除操作时候; 将视图hidden属性声明设置为NO,使其从隐藏状态变为可见; 将视图滚出屏幕,然后再重新回到屏幕; 显式调用视图...在前面我们学会了如何在自定义view中绘制文本信息,其实绘制图片方法绘制文本方法非常类似,所以基本步骤如下: 导入素材 在DrawRect加载图片  UIImage *image = [UIImage

1.5K20

iOS开发中标签控制器使用——UITabBarController

:(BOOL)animated;    //是否正在自定义标签布局 - (BOOL)isCustomizing; 设置tabBar颜色相关: //设置渲染颜色,会影响选中字体和图案渲染 @property...(null_resettable, nonatomic,strong) UIColor *tintColor; //设置导航栏颜色 @property(nullable, nonatomic,strong...; //设置阴影背景图案 @property(nullable, nonatomic,strong) UIImage *shadowImage TabBar中标签宏观属性: //设置标签item位置模式...nonatomic) CGFloat itemWidth; //设置item间距 @property(nonatomic) CGFloat itemSpacing; 与导航栏类似,也可以设置tabBar风格和透明效果...NSArray *)items changed:(BOOL)changed; 五、再看UITabBarItem         和NavigationItem类似,标签栏

1.5K20

iOS开发CoreGraphics核心图形框架之三——颜色与色彩空间

iOS开发CoreGraphics核心图形框架之三——颜色与色彩空间 一、引言     颜色实质是表示颜色二进制数据,如果没有确定规则,则这些二进制数据完全没有意义。...所谓色彩空间,即是表示这些颜色数据信息是如何解释。同样一张图片,在不同色彩空间下,其渲染模样将有很大不同。...二、关于CGColor相关方法解析     CGColorRef是CoreGraphics框架中用于描述颜色引用类型,其中常用方法解析如下: //根据色彩空间创建一个CGColorRef实例 /*...需要注意,这个方法中第2个参数需要传递一个float数据,其需要和第1个参数色彩空间意义对应 例如在RGBA色彩空间中,float数组中需要传递4个值,分别表示红绿蓝和透明度 */ CGColorRef...__nullable CGColorGetComponents(CGColorRef cg_nullable color); //获取颜色透明度 CGFloat CGColorGetAlpha(CGColorRef

1.3K40

探讨iOS 图片解压缩到渲染过程

(计算每个像素点最终显示颜色值) 从帧缓存区中渲染到屏幕 我们提到了图片解压缩是一个非常耗时 CPU 操作,并且它默认是在主线程中执行。...我们在应用中经常用到 JPEG 和 PNG 图片就是位图 大家可以尝试 UIImage *image = [UIImage imageNamed:@"text.png"]; CFDataRef rawData...事实,不管是 JPEG 还是 PNG 图片,都是一种压缩位图图形格式。只不过 PNG 图片是无损压缩,并且支持 alpha 通道,而 JPEG 图片则是有损压缩,可以指定 0-100% 压缩比。...:像素每个颜色分量使用 bit 数,在 RGB 颜色空间下指定 8 即可; bytesPerRow :位图每一行使用字节数,大小至少为 width * bytes per pixel 字节。...(如果出现透明值需要将每个像素点颜色*透明度值)->渲染到帧缓存区->渲染到屏幕 面试中如果能按照这个逻辑阐述,应该没有大问题.不过,如果细问到离屏渲染和渲染中细节处理.就需要掌握OpenGL ES

1.6K40
领券