我正在尝试将CATextLayer
文本(这是一个数字" 1")放在视图中心,但我得到的是非常小的文本而不是中心,如{ {3}}图片。显示的红色圆圈是一个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];
我希望我的问题很明确。请告诉我在哪里弄错了?非常感谢。
答案 0 :(得分:1)
font
属性采用CGFontRef而不是UIFont。您可以使用CGFontCreateWithFontName( (CFStringRef)@"ArialMT" )
创建一个。字体大小使用fontSize
属性设置。
正确的字体名称为"ArialMT"
1。由于您使用的是不存在的字体名称,因此文本将获得默认字体和大小。
该层实际上是居中的,200乘200点 2 。问题是文本不在文本层内居中,而是文本位于左上角。一个更大的字体可以使它看起来几乎居中,但它仍然不会。
如果需要,可以通过将图层的contentsGravity
更改为kCAGravityCenter
来更改图层内容(在您的情况下为文本)相对于图层边界的绘制方式要在文本图层框架内居中显示的文本