Cocoa Touch - 使用叠加视图添加纹理

2024-04-19

我有一组作为 UIView 的图块,它们具有可编程的背景颜色,并且每个图块 可以是不同的颜色。我想为每一个添加纹理,比如侧光斜角。这可以通过覆盖视图或其他方法来完成吗?

我正在寻找不需要为每种情况提供自定义图像文件的建议。


这可能会对某人有所帮助,尽管这是从其他主题中拼凑而成的。 为了创建一个具有任意颜色的斜面平铺图像以用于正常和视网膜显示,我在 Photoshop 中制作了一个斜面图像并将饱和度设置为零,制作了一个名为tileBevel.png

我还为视网膜显示器创建了一个([email protected] /cdn-cgi/l/email-protection)

这是代码:

+ (UIImage*) createTileWithColor:(UIColor*)tileColor {

    int pixelsHigh = 44;
    int pixelsWide = 46;
    UIImage *bottomImage;

    if([UIScreen respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0) {
        pixelsHigh *= 2;
        pixelsWide *= 2;
        bottomImage = [UIImage imageNamed:@"[email protected] /cdn-cgi/l/email-protection"];        
    }
    else {
        bottomImage = [UIImage imageNamed:@"tileBevel.png"];
    }

    CGImageRef theCGImage = NULL;
    CGContextRef tileBitmapContext = NULL;

    CGRect rectangle = CGRectMake(0,0,pixelsWide,pixelsHigh);

    UIGraphicsBeginImageContext(rectangle.size);

    [bottomImage drawInRect:rectangle];

    tileBitmapContext = UIGraphicsGetCurrentContext();

    CGContextSetBlendMode(tileBitmapContext, kCGBlendModeOverlay);

    CGContextSetFillColorWithColor(tileBitmapContext, tileColor.CGColor);        
    CGContextFillRect(tileBitmapContext, rectangle);

    theCGImage=CGBitmapContextCreateImage(tileBitmapContext);

    UIGraphicsEndImageContext();

    return [UIImage imageWithCGImage:theCGImage];

}

这会检查是否使用视网膜显示器,调整要绘制的矩形的大小,选择适当的灰度基础图像,将混合模式设置为叠加,然后在底部图像的顶部绘制一个矩形。所有这些都是在由 BeginImageContext 和 EndImageContext 调用括起来的图形上下文中完成的。这些设置了 UIImage drawRect: 方法所需的当前上下文。 Core Graphics 函数需要上下文作为参数,该参数是通过调用获取当前上下文来获取的。

结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cocoa Touch - 使用叠加视图添加纹理 的相关文章

  • 从 Parse.com 获取 NSString 并将其粘贴到 UILabel 中

    我想从 Parse com 获取 NSString 并将其粘贴到我的 iOS 应用程序中的标签中 有谁知道该怎么做 我遇到了很大的问题 提前致谢 反问题是 你想要得到哪个 NSString 我认为这是您想要显示的 PFObject 的某些属
  • 如何自定义 MPMoviePlayerController 背景和行为的进度条?

    因为我是新人 所以我还不能发布图片 所以我必须画图 Done Loading
  • 自动订阅应用内购买:恢复后续续订

    根据 Apple 应用内购买编程指南 App Store 每次续订订阅时都会创建一个单独的交易 当您的应用程序恢复以前的购买时 Store Kit 会将每笔交易传送到您的应用程序 假设我的应用程序订阅仅限客户端 无服务器组件 验证后续续订是
  • 带有 numberOfLines 和 lineBreakMode 的 UILabel

    我正在开发一个必须同时支持 iOS6 和 iOS7 的项目 我的问题是它在不同的系统上工作不同 我试图创建行数等于 2 的 UILabel 但是当我将其换行模式设置为 NSLineBreakByTruncatingTail 时 它的工作方式
  • 在 iOS8 中使用 UISearchBar 启用取消按钮

    有什么方法可以启用 UISearchBar 的 取消 按钮吗 现在 每当我致电辞职第一响应者时 取消按钮都会被禁用 仅当我再次点击搜索栏时 取消才会启用 有没有办法停止禁用取消按钮 这是适用于 iOS 8 和 Swift 的可行解决方案 f
  • 在 Objective C 中获取第一响应者

    我无法弄清楚哪个UITextField是当前的第一响应者 我想做的是 如果用户单击特定的内容 则设置一个布尔值UITextField 因此 要做到这一点 我需要能够判断这个特定的文本字段是否已成为第一响应者 我知道如何设置第一响应者 但只是
  • 在“id”类型的对象上找不到属性“”

    我越来越Property aVariable not found on object of type id当尝试读取或写入变量到数组时 难道不应该知道我添加的对象是什么类吗 还注意到它可以读取值NSLog anArray objectAtI
  • NSUndoManager 会撤消后台发生的更改吗?

    我有一个编辑视图控制器 我正在使用 NSUndoManager 它是我的持久性存储 核心数据项目 的一组 我的应用程序的功能之一是与外部服务器同步 我想知道的是 如果我正在视图中编辑某些内容 同时应用程序正在与服务器同步 如果我改变主意并决
  • 如何在 Mac OS X 的 Cocoa 上绘制文本内阴影

    如何在 Cocoa for Mac OS X 中的文本上绘制内部阴影 我对 NSView 进行子类化 以创建一个带有渐变背景和内部阴影文本标题的占位符控件 stackoverflow 上所有当前 Core Graphics 的答案似乎都解释
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 为什么不使用 Interface Builder [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 平滑地将渐变应用于 UIImage

    我正在尝试使用 CoreGraphic 将渐变应用于 UIImage 然而 我得到的结果不是很好 我想在图像底部创建一个黑色到透明的渐变 以便为我放置一些文本创建对比度 然而 我能够实现的渐变与图像不能很好地融合 你可以清楚地看到中心的分离
  • CAShapeLayer 路径在动画后消失 - 需要它留在同一个地方

    感谢 StackOverflow 上的一些帮助 我目前正在 CAShapeLayer 中对路径进行动画处理 以制作一个从移动精灵指向屏幕上另一个移动点的三角形 动画完成后 三角形就会从屏幕上消失 我使用的持续时间非常短 因为每个精灵每 0
  • 如何显示AVPictureInPictureController?

    我正在尝试使用播放视频AV画中画控制器最近在IOS9 使用此代码 AVPlayer AVPlayer AVPlayer playerWithURL url AVPlayerLayer layer AVPlayerLayer playerLa
  • 为 iPhone SDK 优化绘图(用手指触摸)应用程序

    我正在编写一个使用手指绘制简单图表的应用程序 我让它在大部分情况下都能工作 但现在我正在尝试优化它的性能 当用户快速滑动手指时 我无法捕获足够的触摸事件来绘制平滑的路径 这是我目前的方法 1 我对 UIView 进行了子类化 并向 CGLa
  • 以编程方式将 UITextField 设置为编辑模式

    我有一个UITextField我想以编程方式设置为编辑模式 屏幕上的键盘和文本字段框中的光标 我知道当此视图出现在屏幕上时 用户将处于编辑模式 因此我希望用户不必点击文本字段 a 的 编辑 属性UITextField是只读的 所以这是行不通
  • 检测 UISwitch 的变化

    这听起来微不足道 但我注意到一些奇怪的地方 我已经为 UISwitch 的 Value Changed 事件连接了一个处理程序 我会做什么expect是每次调用处理程序时 开关的值都会改变 但实际上并非如此always案子 如果您快速按下开
  • ios:如何使用 CGPath 模糊图像?

    我创建了一个 CGPath 区域 如绿色圆圈所示 CGPath区域需要清晰 图像的其余部分将应用模糊或半透明效果 我可以使用以下代码在CGPath内剪切图像 UIGraphicsBeginImageContext view frame si
  • 在 Xcode5 中使用 XCTest 时 AFNetworking 导致错误

    我正在使用 Xcode 5 现在刚刚开始对现有项目进行单元测试 为此我添加了CocoaTouch Unit Testing Bundle作为我的项目的目标 目标名称是 MyAppTests 我之前使用添加了 AFNetworking 库Co
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram

随机推荐

  • 如何使用Git在不同平台上拥有不同的工作目录结构?

    在 Windows 上我们有root folder1 root folder2 root folder3 在Linux上我们有root folder1 folder2 root folder1 folder3 我强烈希望不要使用子模块或子树
  • 复选框的自定义图片?

    我想将复选框显示为切换按钮 但我无法使用 CCS 将自定义图片应用到它 仍然绘制复选框 如何完成这个任务呢 My CSS input type checkbox settingsbutton border style none backgr
  • Eloquent ORM(laravel 5) 是否负责 SQL 注入?

    我在网上找不到它 但是 Eloquent ORM 是否像 PDO 准备好的语句一样处理 SQL 注入 没有任何框架能够 处理 SQL 注入 You处理 SQL 注入 框架可以提供方便地执行此操作的方法 但您仍然必须一致地使用这些方法 例如
  • CUDA素数生成

    当数据大小增加超过 260k 时 我的 CUDA 程序停止工作 它不打印任何内容 有人能告诉我为什么会发生这种情况吗 这是我的第一个 CUDA 程序 如果我想要更大的素数 如何在 CUDA 上使用大于 long long int 的数据类型
  • 在 Hive 中获取空值 使用 REGEX 创建和加载查询

    我有一个日志文件 我需要在其中使用 REGEX 存储数据 我尝试了下面的查询 但加载了所有 NULL 值 我已经检查了 REGEXhttp www regexr com http www regexr com 它对我的 数据工作正常 CRE
  • 从 VideoView 录制视频

    目前在做直播项目 成功实现视频直播 现在我的下一个任务是录制 VideoView 中正在播放的视频 我进行了搜索 能够找到捕获视频 但使用表面 相机 但在 VideoView 中我没有任何表面 任何帮助表示赞赏 你可以看到this http
  • 支持多屏幕的应用程序骨架

    正如我们所知 Android 随各种设备一起提供 这些设备具有不同的功能 功能 分辨率和屏幕尺寸 因此在开发支持的应用程序时 多个 小和大 屏幕存在尺寸和布局障碍 这导致了不同的组合屏幕尺寸 分辨率和 DPI这给 Android 设备的设计
  • gem install pg 错误:无法理解 Yosemite w/ Ruby 2.1.5 上的 kern.osversion `14.0.0'

    我使用 RVM 安装 Ruby 2 1 5 并再次运行捆绑包 现在 pg gem 无法安装 我收到此错误 gem install pg v 0 17 1 with pg config Applications Postgres app Co
  • c# 如何在 select 语句中指定 not ?

    我在数据集上使用 select 方法来检索符合我的条件的结果 foreach DataRow dr in dsPone2 Tables tt pone Select strWhereCondition dsPone Tables tt po
  • Tensorflow 中的平衡准确度分数

    我正在为高度不平衡的分类问题实现 CNN 并且我想在张量流中实现自定义指标以使用 选择最佳模型 回调 具体来说 我想实现平衡的准确度分数 这是每个类别的召回率的平均值 请参阅 sklearn 实现here https scikit lear
  • 如何将一个word文档的内容复制到另一个word文档中?

    我有一个包含一些文本和图像的Word文档 我想使用C 将word文档的内容复制到另一个word文档中 Thanks 尝试下面的代码 这可能对你有帮助 using System using System Collections Generic
  • Android 与 gms play 服务的依赖问题

    我收到一个错误 因为我正在尝试使用来自 Google 的应用程序索引库 同时还导入一个库 该库使用旧版本的 android gms 库作为不同的组件 来自 Google Play 服务的转换库 错误指出 所有 com google andr
  • delta Lake - 在 pyspark 中插入 sql 失败,并显示 java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.expressions.Alias

    Dataproc 集群是使用映像创建的2 0 x带有 Delta io 包io delta delta core 2 12 0 7 0 Spark版本是3 1 1 Spark shell 启动于 pyspark conf spark sql
  • “无法转换为 IComparer”

    我为装箱的RegistryItem对象定义了以下IComparer public class BoxedRegistryItemComparer IComparer public int Compare object left object
  • GPUImageAlphaBlendFilter 来自 GPUImageStillCamera 源的实时处理

    我正在使用 GPUImage 库 我正在尝试实时混合两个图像 并将它们显示在GPUImageView 我正在尝试将普通相机输入与其过滤版本进行 alpha 混合 这是我想做的 gt v camera alpha blend gt image
  • 多个docker容器日志

    我试图一次从多个 Docker 容器获取日志 顺序无关紧要 这将按预期工作 如果types ContainerLogsOption Follow设置为 false If types ContainerLogsOption Follow设置为
  • 获取鼠标下的窗口值

    我正在使用 Cocoa Objective C 我想问你是否可以从非活动窗口获取窗口信息 例如 pid 窗口名称 我的确切意思是 如果有两个不同任务的非全屏 也不是最大化 窗口 A 和 B 比如说 Chrome A 和 Firefox B
  • 是否可以在 C# 中为可空值和不可空值编写隐式转换运算符?

    我正在尝试写一个Alias课程使我能够 int n new Count 1 也就是说 它封装了一个int在这种情况下作为Count 它提供了一些类型安全性和域含义 同时它自动转换回底层类型 对于不可为空的引用类型 我还有另一个问题 我无法弄
  • 是否可以构造一个utf-8编解码器无法编码的unicode字符串?

    是否可以构造一个 unicode 字符串utf 8编解码器无法编码 从文档 https docs python org 2 library codecs html https docs python org 2 library codecs
  • Cocoa Touch - 使用叠加视图添加纹理

    我有一组作为 UIView 的图块 它们具有可编程的背景颜色 并且每个图块 可以是不同的颜色 我想为每一个添加纹理 比如侧光斜角 这可以通过覆盖视图或其他方法来完成吗 我正在寻找不需要为每种情况提供自定义图像文件的建议 这可能会对某人有所帮