ios - Swift 绘图代码在 tvOS 上的行为与 iOS 不同

标签 ios swift tvos cgcontext

我工作的公司同时提供 iOS 和 tvOS 版本的应用程序。该应用程序在底部绘制了一个脚本,供用户在锻炼期间跟上,如下所示:Typical drawing on iOS

这在任何针对 iOS 的应用程序中都运行良好超过一年。然而,当以 tvOS 为目标时,使用相同的绘图代码,而不是按照我期望的方式绘制,tvOS View 在绘制每一行后留下我称之为“痕迹”的东西,而不是只有一行用于当前时间。

Wrong drawing on tvOS

绘制代码如下:

    func addIndicatorLine(_ context:CGContext?, rect: CGRect, start: CGPoint, color: UIColor = UIColor.white) {
    context!.translateBy(x: rect.origin.x, y: rect.height)
    context!.scaleBy(x: 1.0, y: -1.0)

    context!.setLineWidth(1.0)

    context!.setStrokeColor(color.cgColor)
    context!.move(to: CGPoint(x: start.x, y: 0))

    context!.addLine(to: CGPoint(x: start.x, y: rect.size.height - 5))
    context!.strokePath()
    context!.scaleBy(x: 1.0, y: -1.0)
    context!.translateBy(x: -rect.origin.x, y: -rect.height)
}

我是否遗漏了一些明显的东西,或者我必须为 tvOS 版本的绘图代码做一些不同的事情?

最佳答案

所以经过几天的尝试解决这个问题,多亏了一个答案(https://stackoverflow.com/a/43898524/2820553)向我指出了文档中的一行,我需要给我的 View 一个背景颜色,否则绘图错误可能发生:

If the view’s opaque property is also set to YES, the backgroundColor property of the view must not be nil or drawing errors may occur.

只需将 View 的背景设置为清晰的颜色即可解决此问题。令人惊讶的是它没有出现在 iOS 中,而是出现在 tvOS 中。希望这可以帮助其他人寻找类似的东西。

关于ios - Swift 绘图代码在 tvOS 上的行为与 iOS 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394006/

相关文章:

ios - 从 MKPolyline 创建 MKMapView 区域

ios - 实现深度链接以引导用户安装 iOS 应用程序,并在安装后将他们带入应用程序

ios - 来自 sqlite 数据库的 NSMutableArray addObject 不起作用

ios - 在 Firebase : Swift 中使用自定义对象数组存储自定义对象

ios - 您可以将 Apple TV 和 iOS 应用程序转移到另一个开发者帐户吗?

ios - Realm 洗牌 RLMArray

旋转手机后 IOS 标签显示不正确

ios - 如何将已编程的 ViewController 与 Storyboard中创建的新 View 连接起来?

swift - App Store 提交 tvOS 捆绑标识符

ios - Storyboard可以用作 tvos 中的启动屏幕吗?