Iphone 在按钮上滚动溢出文本的简单方法?

Iphone 在按钮上滚动溢出文本的简单方法?,iphone,cocoa,animation,core-animation,Iphone,Cocoa,Animation,Core Animation,是否有人有任何例子或资源,我可能会发现滚动文本太长,无法显示在按钮控件中的信息?我在想这些事情 在当前矩形中显示尽可能多的文本,末尾带有“…”表示溢出 暂停1秒钟,然后缓慢地将文本滚动到右侧边缘,显示字符串的右侧部分 在当前矩形中显示尽可能多的文本,开头带有“…”表示溢出 从相反的方向开始 在某个移动设备上使用“核心”或内置的“动画”框架,有没有一种简单的方法可以做到这一点 [编辑] 我想补充更多的细节,因为我认为人们更关注我想要完成的事情是否合适。该按钮用于在琐事游戏中显示答案。它不执行任

是否有人有任何例子或资源,我可能会发现滚动文本太长,无法显示在按钮控件中的信息?我在想这些事情

  • 在当前矩形中显示尽可能多的文本,末尾带有“…”表示溢出
  • 暂停1秒钟,然后缓慢地将文本滚动到右侧边缘,显示字符串的右侧部分
  • 在当前矩形中显示尽可能多的文本,开头带有“…”表示溢出
  • 从相反的方向开始
在某个移动设备上使用“核心”或内置的“动画”框架,有没有一种简单的方法可以做到这一点

[编辑] 我想补充更多的细节,因为我认为人们更关注我想要完成的事情是否合适。该按钮用于在琐事游戏中显示答案。它不执行任何特定的UI功能,但用于显示答案。苹果自己也在iPodnano上的iQuiz琐事游戏中这样做,我认为这是一个非常优雅的解决方案,可以解决比我的按钮宽度还长的问题


在这种情况下,“…”是最困难的部分。假设我删除了这个要求。我是否可以将按钮的标签设置为全尺寸,但剪切到按钮的客户端矩形,并使用一些动画方法在剪切矩形内滚动它?这将给我几乎相同的效果减去省略号。

非常确定,您不能使用标准API,当然不能使用UILineBreakMode。此外,《样式指南》还指出,省略号表示按下按钮时会询问您更多信息-例如打开文件。。。将询问文件名。您建议使用省略号违反了此准则


你需要一些自定义逻辑来实现你所描述的行为,但我认为这无论如何都不是办法。

如果你不想变得迟钝,也许你应该重新思考你的问题。按钮应具有清晰且可预测的功能。它不是存储和显示文本的地方。也许你可以在屏幕上用下面一个漂亮的标准按钮显示一个描述?

这不是一个很好的UI实践,但如果你仍然想这样做,最好是通过一个可点击的div(样式类似于按钮)来实现


将div的宽度设置为显式值,将其溢出设置为隐藏,然后使用按间隔执行的脚本调整此div的scrollLeft属性。

使用源代码更新示例:

(实际上是一个完整的压缩Xcode项目,包含图像和nib文件以及一些源代码),不适用于iPhone,不使用核心动画,只使用两个简单的NSImages和一个NSImageView。这只是一个廉价的黑客攻击,它没有实现您所要求的全部功能(对不起,但我不想为您编写源代码:-P),糟糕的代码布局(嘿,我只是在几分钟内把它拼凑在一起,所以您不能期望有更好的;-),这只是一个演示如何做到这一点。它也可以通过核心动画完成,但这种方法更简单。将按钮动画组合到NSImageView不如将NSView子类化并直接绘制到其上下文中好,但它要简单得多(我只是想拼凑出可能的最简单解决方案)。当它一直向右滚动时,它也不会向后滚动。因此,您只需要使用另一种方法向后滚动并启动另一个NSTimer,在您将点向左绘制2秒后触发

只需在Xcode中打开项目并点击run,这就是所有要做的事情。然后看看源代码。其实并没有那么复杂(不过,你可能需要先重新格式化,布局很糟糕)


由于对我的答案的评论而更新:

如果您根本不使用Apple UI元素,我就看不出问题所在。在这种情况下,您的按钮甚至不是按钮,它只是一个可单击的视图(如果您使用Cocoa,则为NSView)。您可以将NSView子类化为MyAnswerView,并覆盖paint方法,以便在视图中绘制所需的内容。多行文字、滚动文字、3D文字动画,完全取决于您的想象

,显示某人如何子类化NSView以创建默认情况下不存在的完整自定义控件。控件如下所示:

看到左上角那个有趣的东西了吗?这是一个控制。下面是它的工作原理:


我不想这么说,因为这不是你问题的答案,但“不要那样做!”。苹果有如何实现用户界面的指导方针。尽管你可以随意忽略它们,但苹果用户习惯于让用户界面遵循这些指导原则,不遵循这些指导原则将创建苹果用户觉得难看且没有吸引力的应用程序

让我引述一下

按钮内容和标签

一个按钮总是包含文本,它 不包含图像。如果你需要 在屏幕上显示图标或其他图像的步骤 按钮,使用斜面按钮, 如“斜面按钮”所述

按钮上的标签应为 描述动作的动词或动词短语 执行保存、关闭、打印、, 删除、更改密码等。如果 按钮作用于单个按钮 设置,将按钮标记为 尽可能具体;“选择 例如,“图片…”就更为重要 比“选择…”更有用,因为按钮 立即采取行动,它 不必使用“现在” (例如,现在扫描)在标签中

按钮标签应具有 标题样式大小写,如 如“资本化”中所述 接口元素标签和文本 按钮立即打开 另一个窗口、对话框或应用程序 要执行其操作,可以使用 标签上的省略号。例如 邮件首选项显示一个p