1

我想知道您是否可以帮助我解决与 iOS 相关的问题。

我想创建一个具有一些简洁文本效果的 iPhone 应用程序。

例如,我可能有一个计时器,当时钟达到 10 秒时,每一秒都会发出脉冲以指示时间快结束了。

或者,另一个例子可能是,当用户在游戏中按下不正确的按钮时,我有一个非常快速的动画,它会增加我的文本,因此它占据了大部分屏幕 - 然后在我想要的时候缩小到什么都没有(而不是消失)它结束。

这些中的每一个我也想使用在 Xcode 中无法选择的字体。

所以我的问题是,有没有人知道一个像样的教程地方或书籍,可以教授一些像这样的文本效果 - 以及其他使用自己的字体和样式(即渐变色等)的应用程序如何在他们的应用程序中实际做到这一点? 我正在考虑为每个数字创建一个图像,并在每次我想显示分数或时间时使用这些图像,但这可能不是最佳方式。

任何帮助将非常感激,

非常感谢,

交流电

4

2 回答 2

8

不需要为此使用 CoreText (顺便说一下,CoreText 并不容易理解,相信我我在这个框架上做了很多工作,在你的情况下,不需要使用如此复杂的低级框架而你可以用更简单的方法做你想做的一切)

1. 动画

使用基于块的动画方法来制作“脉冲”动画非常简单,并将标签UIView更改为 a ,这将使缩放从 100% 变为 130%,然后再回到 100%。transformCGAffineTransformScale

使标签脉冲从 100% 到 130% 的最简单示例是使用以下代码:

[UIView animateWithDuration:0.5 animations:^{
   // grow the label up to 130%, using a animation of 1/2s
   myLabel.transform = CGAffineTransformMakeScale(1.3,1.3); 
} completion:^(BOOL finished) {
   // When the "grow" animation is completed, go back to size 100% using another animation of 1/2s
   [UIView animateWithDuration:0.5 animations:^{
        myLabel.transform = CGAffineTransformIdentity;
   }];
}];

当然这是一个简单的例子,您可以使用其他更完整的[UIView animationWithDuration:…]变体自定义动画(添加延迟、控制动画曲线等)。

您甚至可以使用 CoreAnimation 来构建显式且更详细的动画,请参阅 Apple 文档中的Core Animation Cook BookCore Animation Programming Guide以了解构建更复杂动画的更多详细信息;但在你的情况下,[UIView animationWithDuration:…]变体应该就足够了)

2.自定义字体

您可以轻松地将自定义字体添加到您的应用程序中,只需在应用程序资源中添加字体(TTF 文件),然后使用UIAppFontsInfo.plist 中的键列出这些自定义字体。有关更多信息,请参阅Info Plist Key Reference 中的此处

3.文字渐变色

您可以通过在图像的蒙版上绘制文本来执行此类操作。在图像上绘制渐变(使用 CoreGraphics,请参阅Quartz 2D 编程指南)并将文本用作遮罩(遮罩的黑色部分为绘制部分,白色部分为透明)。

但更简单的方法是在您的资源中使用一些图像作为模式(例如具有一些渐变的图像),并使用以下代码来使用此渐变颜色:

yourLabel.textColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourpattern.png"]];

您甚至可以UIImage使用 CoreGraphics(或 CAGradientLayer 或其他东西)通过代码(而不是在资源中)创建渐变。

于 2012-11-06T21:07:41.640 回答
0

听起来你想要一些低级的绘图代码,比如使用Core Text

Core Text 框架是一种用于布局文本和处理字体的高级、低级技术。专为高性能和易用性而设计,Core Text 布局引擎的速度是 ATSUI(用于 Unicode 图像的 Apple 类型服务)的两倍。Core Text 布局 API 简单、一致,并且与 Core Foundation、Core Graphics 和 Cocoa 紧密集成。

您的问题非常笼统,因此很难给出具体答案,但我将从阅读该框架文档开始。


这个问题也可能有帮助:https ://stackoverflow.com/questions/2763757/core-text-tutorial

于 2012-11-06T21:05:24.403 回答