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

问题描述:

有没有人有任何例子或资源,我可能会发现滚动文本的信息太长,不能显示在按钮控件中?我正在想这些方面。简单的方法来滚动按钮上的溢出文本?

  • 显示尽可能多的文本将符合当前矩形在最后用'...'表示溢出。
  • 暂停1秒钟,然后将文本缓慢滚动到显示右侧部分的右边缘。
  • 在开始处显示尽可能多的文本将符合当前矩形,用'...'表示溢出。
  • 反过来开始整个事情。

是否有一个简单的方法来做到这一点使用的“核心”或建在“动画”的框架一定的移动设备上?

我想添加一些更多的细节,因为我认为人们更关注或不是我想要完成的是合适的。该按钮用于琐事游戏的答案。它不执行任何特定的UI功能,但用于显示答案。苹果自己正在iPod Nano的iQuiz琐事游戏中这样做,我认为它是一个相当优雅的解决方案,它的答案比我的按钮的宽度更长。

万一它的'...'是这个难题的一部分。可以说我删除了这个要求。我可以将按钮的标签设置为全尺寸,但是可以将其剪裁到按钮的客户端矩形,并使用一些动画方法在剪裁矩形内滚动它?这会给我几乎相同的效果减椭圆。

这里有一个想法:省略号代替(...),使用渐变每侧,所以多余的文字消失到背景色。然后你可以用三个CALayers做这个:一个用于文本,两个用于淡入淡出效果。

褪色掩模也只是与从透明变为背景颜色梯度的矩形。它们应该位于文本图层上方。文本将在文本图层上绘制,然后按照您描述的方式来回滑动。您可以创建一个描述路径的CGPath对象,并将其添加到添加到文本图层的CAKeyframeAnimation对象。

至于你是否认为这很“容易”,取决于你对Core Animation的了解程度,但是我认为一旦你学习了API,你会发现这并不算太坏,而且会很麻烦。

很确定你不能使用标准API来做到这点,当然不能用UILineBreakMode。此外,风格指南还指出,省略号表示按下该按钮时会要求您提供更多信息 - 例如“打开文件...”将询问文件的名称。您建议使用的省略号违反了这一指导原则。

你需要一些自定义逻辑来实现你描述的行为,但我不认为这是要走的路。

不希望成为懒惰,也许你应该重新思考你的问题。一个按钮应该有一个清晰和可预测的功能。这不是存储和显示文本的地方。也许你可以在屏幕上用一个很好的标准按钮在屏幕上显示说明?

这是不是一个很好的用户界面的做法,但如果你仍然想做到这一点,最好的办法是通过风格看起来像一个按钮,可点击div来这样做。

设置div的宽度,以明确的值,并且其溢流到隐藏的,然后使用上的间隔执行脚本来调整这个div的scrollLeft属性。

更新与源代码示例:

Here is some ready to use source code example(带图像和笔尖文件和部分源代码,实际上是一个全压缩的Xcode项目),而不是为iPhone,不使用的Core Animation,只用几个简单的NSImages的和一个NSImageView。这只是一个便宜的黑客攻击,它并没有实现你所要求的全部功能(抱歉,但我不想为你编写源代码:-P),可怕的代码布局(嘿,我只是在几分钟,所以你不能指望任何更好的;-)),这只是一个演示如何做到这一点。它也可以用Core Animation来完成,但这种方法更简单。将按钮动画组合成一个NSImageView并不像子类化一个NSView并直接绘制其上下文,但它更简单(我只是想将最简单的解决方案拼凑在一起)。一旦滚动到最右边,它也不会回滚。因此,您只需要另一种方法即可向后滚动并启动另一个NSTimer,在您将点绘制到左侧2秒后启动。

只需在Xcode中打开项目并点击运行,就可以做到这一切。然后看看源代码。它并不是那么复杂(但是,你可能需要重新格式化它,布局很糟糕)。因为我的答复意见


更新:

如果你不使用苹果的UI元素可言,我看不出问题。在这种情况下,你的按钮甚至不是一个按钮,它只是一个可点击的视图(如果使用Cocoa,则为NSView)。你可以将NSView子类化为MyAnswerView,并覆盖绘制方法以绘制任何你想要的视图。多行文字,滚动文字,3D文字动画,完全取决于您的想象力。

Here's an example,显示了某人如何划分NSView以创建一个默认情况下不存在的完整自定义控件。控制是这样的:

alt text http://katidev.com/blog/wp-content/uploads/2008/03/asimocontrol.jpg

看到左上角的有趣的事情?这是一个控制。下面是它如何工作的:

alt text http://katidev.com/blog/wp-content/uploads/2008/03/conroldiagram.jpg


我讨厌这样说,因为这是不回答你的问题,但“不要做!”。 Apple有指导如何实现用户界面。虽然您可以*地忽略它们,但Apple用户习惯于遵循这些指导原则制定用户界面,而不遵循这些用户界面将创建苹果用户觉得难看又没有吸引力的应用程序。

Here are Apple's Human Interface Guidelines

让我引用从那里

按钮的内容和标签

一个按钮总是包含文本,它 不包含图像。如果您需要 显示在 按钮图标或其他图像,改为使用斜角按钮, 中描述的“斜角按钮”。

上按钮的标签应该是一个 动词或动词词组描述它执行的动作 - 保存,关闭,打印, 删除,更改密码等。如果 按钮作用于单个 设置,请尽可能专门将按钮标记为 ; “选择 图片...”,例如,比“选择...”更有用 有帮助因为按钮 启动立即动作,所以在标签中使用“now” (例如,立即扫描)不应该需要使用 。

按下按钮标签应该有 标题样式的大写,如在 “的 接口元素标签和文字资本化。”如果 按钮立即打开 另一个窗口,对话框,或者应用 执行其操作,您可以在标签中使用省略号 。例如, Mail偏好显示一个推 按钮,其包括省略号 因为它打开的.Mac系统 偏好,如图15-8。

按钮应该包含单个动词或动词短语,而不是琐事游戏的答案!如果您有2到5个答案,您应该使用单选按钮让用户选择答案,然后按确定按钮让用户接受答案。对于5个以上的答案,您应该根据指导原则考虑一个弹出式选择器,不过我猜这在这种情况下会比较难看。

你可以考虑使用只有一列,每回答一个行和每一单元多的表,如果答案是很长,而且需要突破。因此,用户通过单击它来选择一个表格行,这会突出显示表格单元格,然后单击确定按钮完成。或者,只要用户选择任何表格单元格,就可以直接继续(但这样可以让用户有机会纠正意外点击)。另一方面,在MacOS X上,具有多行单元格的表格相当罕见。iPhone使用了一些,但通常文本很少(最多两行)。

+0

我的用户界面不使用任何内置UI元素的苹果股票,我想保持这种方式。虽然我很欣赏你的表格建议,但它不符合我的主题。请参阅http://driph.com/words/2008/08/game-trivia-catechism-iphone-teaser/了解我为什么要尝试这样做。 – Lounges 2008-09-29 15:11:50