启用颜色混合图层后,是否可以将非英文字符的 UILabel 设为绿色?

2024-02-25

我有一个带有自定义单元格的表格视图,我尝试通过将单元格内的所有子视图设为绿色来优化它Color Blended Layer在模拟器中检查。

当背景UILabel单元格中设置为白色:

let title = UILabel()
contentView.addSubview(title)
title.background = UIColor.whiteColor()
title.text = "Hi, how are you?"

这个 UILabel 子视图将在模拟器中变成绿色,这很好。但是,如果我将文本更改为一些中文:

title.text = "你好"

UILabel 子视图将变成红色。这SO post https://stackoverflow.com/questions/31759796/when-i-used-chinese-uitableview-cell-will-be-color-blended提供有关情况的一些解释。实际上有解决方案吗?


Use CATextLayer代替UILabel。并且不要忘记设置它opaque财产给true.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

        // You should definitely put layer handling logic into 
        // UITableViewCell subclass. I'm omitting it for clarity
    let layer = cell.contentView.layer

    let textLayer = CATextLayer()
    textLayer.string = "你好"
    textLayer.bounds = CGRect(x: 0, y: 0, width: 100, height: 50)
    textLayer.position = CGPoint(x: 50, y: 25)
    textLayer.opaque = true

    layer.addSublayer(textLayer)

    return cell
}

UPD:如果黑色背景不是您想要的,问题就会变得有点棘手,但仍然可以解决。

您所需要的只是将两行代码注入到绘图机制中。有两种方法可以实现此目的:

  • 使用一个delegate of a CALayer or

  • 制作一个子类CATextLayer.

就我们而言,我认为后者更可取。所以而不是CATextLayer在下面的示例中使用此类:

class OpaqueTextLayerWithCustomizableBackgroundColor: CATextLayer {
    override func drawInContext(ctx: CGContext) {
        if let color = backgroundColor {
            CGContextSetFillColorWithColor(ctx, color)
            CGContextFillRect(ctx, bounds);
        }
        super.drawInContext(ctx)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启用颜色混合图层后,是否可以将非英文字符的 UILabel 设为绿色? 的相关文章

  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • scntool:无法转换文件,失败原因:*** -[__NSSingleObjectArrayI objectAtIndex:]:索引 1 超出范围

    我正在 Xcode 9 3 下开发一个基于 iOS 11 3 SceneKit 的项目 我有几个 dae 文件格式的 3D 模型 每当我构建项目时 其中一个模型不会被复制到最终的 iOS 包中 深入研究错误 我在复制捆绑资源构建阶段收到以下
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • 无法连接到 iTunes Store(获取应用内购买列表)

    我正在尝试从我的应用程序的应用程序内购买项目商店中获取列表 这是我所做的 安装了新的配置文件并启用了应用内购买 替换配置文件很棘手 但我认为我的设置是正确的 验证税务和银行信息是否正常 该应用程序已在商店出售 创建测试用户 在测试设备上以测
  • 为什么performSegueWithIdentifier在viewDidLoad中不起作用?

    我试图在视图控制器上调用 viewDidLoad 后立即触发故事板转场 Segue 附加了一个标识符 当从链接到按钮或其他控件的方法内部调用时 它可以正常工作 但它在 viewDidLoad 内部不起作用 它只是默默地失败了 viewDid
  • `navigator.geolocation.getCurrentPosition()` 在 iOS PWA 上挂起

    我有这个片段 const getCurrentPosition gt new Promise
  • 将自定义数据包含到 iOS 故障转储中

    你好 堆栈溢出 有一个简单的问题要问您 当我的应用程序在用户的设备上崩溃时 是否可以将自定义错误数据嵌入到自动生成的 iOS 故障转储中 例如 我的 SQlite 数据库由于某种原因无法运行 例如 数据库文件已损坏 我无法从这个错误中恢复
  • 如何保护 iOS 应用程序免受任何操作系统攻击(在越狱设备上)

    我希望保护我的应用程序数据 以防任何操作系统攻击或越狱 iOS 设备上的未经授权的访问 在这种情况下 有什么方法可以检测此类威胁并保护应用程序数据 虽然我同意 jrturton 的说法 但如果您有想要保护的关键数据免受流氓应用程序 而不是用
  • dyld:无法加载插入的库

    当我尝试运行 UI 和单元测试时 出现异常 dyld 无法加载插入的库 private var containers Bundle Application AutoTestingApp app Frameworks IDEBundleInj
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • watchOS 错误:控制器接口描述中的未知属性

    我将 WKInterfacePicker 添加到情节提要中 并将其连接到界面控制器中的 IBOutlet 运行应用程序时 它在控制台中显示一条错误消息 控制器的接口描述 watchPicker 中的未知属性 Code interface I
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • Python:从 Ipywidget 按钮重置 Matplotlib

    在 Jupyter 笔记本中使用 iPyWidgets 和 Matplotlib 时 即使有多个子图以及带有多个滑块的多个变量 也很容易获得实时更新的图形 只需设置一个interact包含激活的绘图函数以及两个滑块变量的构造函数 pylab
  • 如何获取符号链接的绝对路径?

    如何获取符号链接的绝对路径 如果我按照以下方式进行 char buf 100 realpath symlink buf 我不会获得符号链接的绝对路径 但我会获得此符号链接链接到的绝对路径 现在我的问题是 如果我想获取符号链接本身的绝对路径怎
  • 连接两列中具有相同值的两行

    这是我的桌子的打印屏幕图像 我有一个名为 table 的 MySQL 表 当我写下 SELECT FROM table 在 while 循环中 我想获得一次相同的 fikraNo 和 maddeNo 值 但是如果 fikraNo 和 mad
  • 使用 ODBC 连接 SQLite,无需注册数据库

    是否可以在 C 中连接到 SQLite 并使用 ODBC API 而无需在 ODBC 中注册数据库 我有使用 ODBC 与数据库通信的代码 但不想使用 SQLite 进行重写 也不想注册新的 ODBC 连接 您应该能够在不更改任何代码的情况
  • firebase中的数据排序

    我正在存储一个score对于我在 firebase 中的应用程序的每个用户 user name score 我想显示一个排行榜 其中包含前 10 位用户的姓名和分数 并保持实时更新 实现这一目标的最佳方法是什么 查看排行榜示例以了解执行此操
  • 如何获取所有Windows组?

    我写这个是为了获取特定用户所属的组 DirectoryEntry AD new DirectoryEntry WinNT Environment MachineName computer DirectoryEntry user AD Chi
  • 用户控件回发在更新面板中不起作用

    我有一个带有更新面板的母版页
  • 到同一个 Razor 页面的多个路由

    背景 我的 Asp Net Core 3 1 网站中有一个名为 SignupAndApply 的剃刀页面 它实际上是注册身份页面的复制和粘贴 但是 有一些附加字段 允许可选的 applyid 作为路由的一部分传递 如果我传递 applyId
  • 如何将 Angular CLI 升级到最新版本

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Using ng version I got 角度 cli 1 0 0 这不是可用的最新
  • 改进您的构建过程

    或者 当一开始就没有太多的构建流程时 实际上建立了一个构建流程 目前 这几乎就是我的团队面临的情况 我们主要进行网络应用程序开发 但目前不进行桌面开发 即使对于我们普通的应用程序 软件部署也是丑陋且笨拙的 而且在我加入这个团队 和公司 的两
  • 是否可以在我的网络应用程序中使用 Google Talk 的音频聊天服务?

    我正在用 PHP 构建一个应用程序 我想知道是否可以在我的 Web 应用程序中使用 Google Talk 的音频聊天服务 是的你可以 Google 将 Google talk 定义为 开放式 IM 服务 以便您可以将自己的客户端应用程序连
  • 在同一端口上运行 Angular 和 ASP.NET Web API

    我目前正在使用 Angular 向运行 ASP NET 的 API 服务器发出 API 调用 但是 对于角度开发 我有一个跨域问题 我使用的是 localhost 在生产版本中 它们都将使用 IIS 在同一域下运行 有没有办法在 ASP N
  • 如何根据某些条件更改 jinja2 条目的颜色? (使用烧瓶)

    我刚刚完成了烧瓶教程 http flask pocoo org docs 0 12 tutorial 逐步创建博客 Web 应用程序 这些条目通过 jinja 模板呈现 ul class entries for entry in entri
  • 在NearProtocol中,如何迁移合约状态

    假设有一个用near sdk rs编写的合约 已部署 其状态定义为 near bindgen derive BorshDeserialize BorshSerialize pub struct NFT pub tokens Unordere
  • 获取找不到符号:来自 ant 的 getSystemService 方法

    我刚刚开始使用 android ant 给了我以下错误 compile java 44 cannot find symbol javac symbol method getSystemService java lang String jav
  • C++20 中的 CTAD 和指定初始值设定项

    我已经在本文中表达了对 CTAD 与指定初始化程序的混淆question https stackoverflow com questions 57886451 c20 designated initializers with templat
  • 如何设置数组的默认值(php)

    e g arr array k1 gt 1 k2 gt 2 k3 gt 3 如果我想获取 arr k4 意外索引 有一条通知 Notice undefined index 那么 我可以为数组设置一个默认值吗 就像 ruby 的哈希值一样 h
  • (viewConroller.view removeFromSuperview)线程:1 EXC_BAD_ACCESS(代码=1,地址= 0x6000000008)

    嗨 抱歉 我的英语不好 您好 我有下一期 我创建 2 个按钮 第一个按钮创建一个视图控制器并将其视图添加到其他视图控制器 第二个按钮我释放创建的视图控制器并从父级中删除视图 如果我点击得更快 两个按钮就会崩溃 并显示类似帖子标题中的消息 这
  • 如何判断上传的文件是图片还是其他文件?

    在我的网络应用程序中 我有一个图像上传模块 我想检查上传的文件是否是图像文件或任何其他文件 我在服务器端使用Java 图像被读作BufferedImage在java中 然后我将其写入磁盘ImageIO write 我该如何检查Buffere
  • 启用颜色混合图层后,是否可以将非英文字符的 UILabel 设为绿色?

    我有一个带有自定义单元格的表格视图 我尝试通过将单元格内的所有子视图设为绿色来优化它Color Blended Layer在模拟器中检查 当背景UILabel单元格中设置为白色 let title UILabel contentView a