使用视图的 Swift 中的 LED 横幅

Posted

技术标签:

【中文标题】使用视图的 Swift 中的 LED 横幅【英文标题】:LED Banner in Swift using views 【发布时间】:2016-03-25 11:10:32 【问题描述】:

我尝试创建一个动画 LED 横幅。我可以使用 5x8 数字显示器创建字母视图并使文本移动 (https://github.com/drollig8/LEDBanner.git): 问题:只有 10 个字母的文本 ios 必须每秒刷新 400 个视图 25 次。这种方式会杀死 CPU。

我可以做些什么来使这项工作更加节能?

【问题讨论】:

如何使用字体而不是 LED。这是一个选择吗? 【参考方案1】:

这是一种从右到左滚动显示的方法。

    使用 drawRect 函数创建一个可以绘制 5x8 单元格的自定义视图。 使用其中的 11 个视图来表示您的显示。将它们作为子视图添加到适当大小的视图中。 每隔 1/25 秒,移动 11 个视图,如果最左侧的视图已滚动到末尾,则将其移至右侧并使用新的字母数据进行更新。

【讨论】:

听起来单元格的内容保持不变。但是通过平滑滚动,字母必须“滑过”单元格,这意味着我必须每秒创建一个新单元格 25 次。并且每个单元格必须包含 40 个子视图才能显示“位”或“位”。 每 1/25 秒将单元格向左移动 1/5 个单元格。这些位是矩形填充。看看如何在 drawRect 例程中绘制填充矩形。这种方法总共会使用 12 个视图,并且只有在它第一次进入屏幕时才会绘制一个新字母。 您可以通过这种方式使用子视图来表示位。您只会创建与“on”位一样多的单元格子视图。滚动一个字母仍然和移动单元格超级视图一样简单。这样做,您将拥有三个级别的视图:一个视图表示显示,11 个字母子视图,以及每个字母的尽可能多的子视图来表示“on”像素。 完美!仅绘制“on”数字的提示显着减少了 cpu 使用率。请在 github 上找到我的更新代码:github.com/drollig8/LEDBanner.git

以上是关于使用视图的 Swift 中的 LED 横幅的主要内容,如果未能解决你的问题,请参考以下文章

当 iAd 横幅出现时,如何将视图的内容上移? (在 Swift 中以编程方式)

AdMob 横幅广告未显示 Swift 3

表格视图下方的 iAd 横幅

collectionview admob ios中的横幅广告

如何直接为警报注册通知,而不仅仅是横幅? XCode 中的 Swift 或 Objective C

Admob横幅不坚持uitableview swift的底部