更新源代码示例:
这是一些准备使用的源代码示例(实际上是一个完整的压缩 Xcode 项目,包含图像和 nib 文件以及一些源代码),不适用于 iPhone,不使用 Core Animation,只使用几个简单的 NSImage 和一个 NSImageView。这只是一个廉价的 hack,它没有实现您要求的全部功能(对不起,但我不想为您编写源代码 :-P),糟糕的代码布局(嘿,我只是在一个几分钟,所以你不能指望更好;-)) 这只是一个演示如何做到这一点。它也可以通过 Core Animation 完成,但这种方法更简单。将按钮动画组合成 NSImageView 不如将 NSView 子类化并直接绘制到其上下文中那么好,但它要简单得多(我只是想将最简单的解决方案组合在一起)。一旦一直向右滚动,它也不会向后滚动。因此,您只需要另一种方法来回滚并启动另一个 NSTimer,它会在您将点向左绘制 2 秒后触发。
只需在 Xcode 中打开项目并点击运行,即可。然后看看源代码。它真的没有那么复杂(但是,您可能必须先重新格式化它,布局很烂)。
由于对我的回答的评论而更新:
如果您根本不使用 Apple UI 元素,我看不到问题所在。在这种情况下,您的按钮甚至不是按钮,它只是一个可点击的视图(如果您使用 Cocoa,则为 NSView)。您可以将 NSView 子类化为 MyAnswerView 并覆盖paint方法以绘制任何您想要的视图。多行文字、滚动文字、3D文字动画,完全取决于你的想象。
这是一个示例,展示了某人如何将 NSView 子类化以创建默认情况下不存在的完整自定义控件。控件如下所示:
看到左上角有趣的东西了吗?那是一个控制。以下是它的工作原理:
我讨厌这样说,因为这不是你问题的答案,但是“不要那样做! ”。Apple 有如何实现用户界面的指南。虽然您可以随意忽略它们,但 Apple 用户习惯于让 UI 遵循这些准则,而不遵循它们会创建 Apple 用户觉得丑陋且没有吸引力的应用程序。
以下是 Apple 的人机界面指南
让我从那里引用
按钮内容和标签
按钮总是包含文本,它不包含图像。如果您需要在按钮上显示图标或其他图像,请改用斜角按钮,如“斜角按钮”中所述。</p>
按钮上的标签应该是一个动词或动词短语,描述它执行的操作——保存、关闭、打印、删除、更改密码等。如果按钮作用于单个设置,请尽可能具体地标记按钮;例如,“选择图片...”比“选择...”更有帮助,因为按钮会立即执行操作,因此不必在标签中使用“现在”(例如,立即扫描)。
按钮标签应具有标题风格的大写,如“界面元素标签和文本的大写”中所述。如果按钮立即打开另一个窗口、对话框或应用程序来执行其操作,您可以在标签中使用省略号。例如,Mail 首选项会显示一个包含省略号的按钮,因为它会打开 .Mac 系统首选项,如图 15-8 所示。
按钮应包含单个动词或动词短语,而不是琐事游戏的答案!如果您有 2 到 5 个答案,您应该使用单选按钮让用户选择答案,并使用确定按钮让用户接受答案。对于超过 5 个答案,您应该根据指南考虑使用弹出式选择器,尽管我想在这种情况下会相当难看。
您可以考虑使用只有一列的表格,每个答案一行,如果答案很长并且需要中断,则每个单元格都是多行的。因此,用户通过单击选择表格行,突出显示表格单元格,然后单击“确定”按钮完成。或者,您可以直接继续,只要用户选择任何表格单元格(但这样您就可以让用户有机会更正意外点击)。另一方面,多行单元格的表格在 MacOS X 上相当少见。iPhone 使用了一些,但通常只有很少的文本(最多两行)。