1

我试图将我的CATextLayer文本(这是一个数字“1”)放在视图的中心,但我得到的是非常小的文本,而不是如图所示的中心。显示的红色圆圈是一个CALayer动画对象本身,所以我不想将文本作为子图层添加到它。相反,我添加为子层来查看。我为 CATextLayer 编写的代码是:

CATextLayer *numbers = [CATextLayer layer];

numbers.string = @"1";
numbers.font = [UIFont fontWithName:@"Arial" size:100.0];
numbers.foregroundColor = [UIColor blackColor].CGColor;
numbers.bounds = CGRectMake(0, 0, 200, 200);
numbers.position = self.view.center;
numbers.wrapped = NO;

[self.view.layer addSublayer:numbers];

我希望我的问题很清楚。请告诉我我错在哪里?非常感谢。

4

1 回答 1

1

编辑

font属性采用 CGFontRef 而不是 UIFont。您可以使用CGFontCreateWithFontName( (CFStringRef)@"ArialMT" ). 使用该fontSize属性设置字体大小。

原始答案

正确的字体名称是"ArialMT"1。由于您使用的是不存在的字体名称,因此文本将获得默认字体和大小。

该层实际上是居中的,200 x 200 点2。问题是文本不在文本层内居中,而是文本位于左上角。更大的字体可以使它看起来几乎居中,但它仍然不会。

您可以更改图层内容(在您的情况下为文本)相对于图层边界的绘制方式,方法是将图层更改为contentsGravity类似于kCAGravityCenter如果您希望文本在文本图层的框架内居中显示


  1. iOS 字体是获取某些字体时应使用的名称的绝佳资源。
  2. 这可以通过给文本层一个强烈的背景颜色来很容易地验证,比如清晰的蓝色(因为你的圆圈是红色的)
于 2012-07-23T20:16:41.377 回答