将 UIColor 设置为 BackgroundImage 时 ios-13-App 崩溃

Posted

技术标签:

【中文标题】将 UIColor 设置为 BackgroundImage 时 ios-13-App 崩溃【英文标题】:ios-13-App crashes when setting UIColor as BackgroundImage 【发布时间】:2020-01-26 16:47:12 【问题描述】:

我正在尝试用UIColor 设置searchbar 背景图像。我的代码在 ios 12.x 中运行良好,但在 ios 13 中崩溃。我的代码如下。

[[UISearchBar appearance] setScopeBarBackgroundImage:[UIImage imageWithCGImage:(__bridge CGImageRef)([UIColor clearColor])]];

崩溃日志显示由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“通过的 imageRef 不是 CGImageRef”

谁能提出解决崩溃的替代方法?

【问题讨论】:

令人惊讶的是,在 iOS 13 之前没有给您带来麻烦...这:(__bridge CGImageRef)([UIColor clearColor]) 确实 返回 CGImage / CGImageRef 【参考方案1】:

在您的代码中,您将 UIColor 对象转换为 CGImageRef。这没有意义,我不知道为什么它会在 iOS 12 中起作用。

您可能只想制作一个用纯色填充的 UIImage。像这样的东西: https://gist.github.com/uknowho/5915365

【讨论】:

以上是关于将 UIColor 设置为 BackgroundImage 时 ios-13-App 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从 UIColor 数组设置单元格背景

我的导航栏的自定义 UIColor

调整 UIColor 的 alpha

如何将 UIColor 转换为 SwiftUI 的颜色

必须为“[[UINavigationBar 外观] setBarTintColor:[UIColor darkGrayColor]];”切换视图去工作

将 UIColor 存储在 CoreData 中