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