iTunes 歌曲标题在 Cocoa 中滚动
我进行了广泛的搜索,但我无法找到任何有关如何在 Cocoa 中文本太大的情况下实现与 iTunes 歌曲标题滚动类似的效果的信息。我尝试在 NSTextField 上设置边界但无济于事。我尝试过使用 NSTextView 以及使用 NSScrollView 的各种尝试。我确信我错过了一些简单的东西,但任何帮助将不胜感激。如果可能的话,我也希望不必使用 CoreGraphics。
示例,注意“Base. FM http://www。"文本已滚动。如果您需要更好的示例,请打开 iTunes,其中包含一首标题相当大的歌曲,然后观看它来回滚动。
我认为肯定有一种简单的方法可以使用 NSTextField 和 NSTimer 创建选取框类型效果,但可惜。
I have searched extensively and cannot for the life of me find any information about how to achieve a similar effect to that of the iTunes song title scrolling if the text is too large in Cocoa. I have tried setting the bounds on a NSTextField to no avail. I have tried using NSTextView as well as various attempts at using NSScrollView. I am sure I am missing something simple but any help would be greatly appreciated. I am also hoping to not have to use CoreGraphics if at all possible.
Example, notice the "Base.FM http://www." text has been scrolled. If you need a better example open iTunes with a song with a rather large title and watch it scroll back and forth.
I would think surely there is a simple way to just create a marquee type effect with an NSTextField and an NSTimer, but alas.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我可以看到,如果您试图将功能硬塞到现有控件中,这将是多么困难。然而,如果你只是从一个普通的 NSView 开始,那也没有那么糟糕。我在大约 10 分钟内完成了这个...
只需将 NSView 拖到 Interface Builder 中的窗口上并将其类更改为“ScrollingTextView”即可。然后(在代码中),您可以:
这显然是相当基本的,但它可以完成您正在寻找的内容,并且是一个不错的起点。
I can see how this would be difficult if you're trying to shoehorn the functionality into an exist control. However, if you just start with a plain NSView, it's not that bad. I whipped this up in about 10 minutes...
Just drag an NSView onto your window in Interface Builder and change its class to "ScrollingTextView". Then (in code), you do:
This is obviously pretty rudimentary, but it does the wrap around stuff that you're looking for and is a decent place to start.
对于任何在 Swift 4 中寻找此内容的人,我已经转换了 Dave 的答案并添加了更多功能。
参考要点:
For anyone looking for this in Swift 4, I have converted Dave's answer and added some more functionality.
Reference gist:
https://gist.github.com/NicholasBellucci/b5e9d31c47f335c36aa043f5f39eedb2