Properties 属性不应用于CATextLayer
我试图将我的Properties 属性不应用于CATextLayer,properties,core-animation,catextlayer,Properties,Core Animation,Catextlayer,我试图将我的CATextLayer文本(是一个数字“1”)放在视图的中心,但我得到的是非常小的文本,而不是如图所示的中心。显示的红色圆圈是一个CALayer对象本身,它是动画的,所以我不想将文本作为子层添加到它。相反,我添加了作为子层来查看。我为CATextLayer编写的代码是: CATextLayer *numbers = [CATextLayer layer]; numbers.string = @"1"; numbers.font = [UIFont fontWithName:@"Ar
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];
我希望我的问题是清楚的。请告诉我哪里弄错了?非常感谢。编辑
font
属性采用CGFontRef而不是UIFont。您可以使用CGFontCreateWithFontName((CFStringRef)@“ArialMT”)
创建一个。使用fontSize
属性设置字体大小
原始答案
正确的字体名称是“ArialMT”
。由于您使用的是不存在的字体名称,因此文本将获取默认字体和大小
该层实际上居中,200乘200点2。问题是文本没有在文本层内居中,而是在左上角。更大的字体可以使它看起来几乎居中,但它仍然不会居中
如果希望文本显示在文本层框架内的中心位置,可以通过将层的contentsGravity
更改为类似kCAGravityCenter
的值来更改相对于层边界绘制层内容(在本例中为文本)的方式
font
属性采用CGFontRef而不是UIFont。您可以使用CGFontCreateWithFontName((CFStringRef)@“ArialMT”)
创建一个。使用fontSize
属性设置字体大小
原始答案
正确的字体名称是“ArialMT”
。由于您使用的是不存在的字体名称,因此文本将获取默认字体和大小
该层实际上居中,200乘200点2。问题是文本没有在文本层内居中,而是在左上角。更大的字体可以使它看起来几乎居中,但它仍然不会居中
如果希望文本显示在文本层框架内的中心位置,可以通过将层的contentsGravity
更改为类似kCAGravityCenter
的值来更改相对于层边界绘制层内容(在本例中为文本)的方式
现在使用
numbers.alignmentMode=kCAAlignmentCenter
将我的文本放在中间。但字体大小和文字并没有改变,即使我尝试了“阿里亚姆特”和其他字体。其次,我注意到我的文字隐藏在红色圆圈后面。他们有没有办法把我的文字放在最上面?愚蠢的我。。。字体属性是CGFontRef
,而不是UIFont
。您应该分别设置字体和字体大小(更新答案)。您可以通过更改zPosition
将1移动到图层上方,或仅将其添加到圆圈后面(或者使用下面的insertSublayer:在文本层后面插入圆圈:
你说得对,大卫。我应该分别设置字体和字体大小。我不需要设置为子层,因为我已经更改了文本的颜色。它现在工作得很好:)谢谢你的链接。它肯定会在将来帮助我:)现在使用numbers.alignmentMode=kCAAlignmentCenter
将我的文本放在中间。但字体大小和文字并没有改变,即使我尝试了“阿里亚姆特”和其他字体。其次,我注意到我的文字隐藏在红色圆圈后面。他们有没有办法把我的文字放在最上面?愚蠢的我。。。字体属性是CGFontRef
,而不是UIFont
。您应该分别设置字体和字体大小(更新答案)。您可以通过更改zPosition
将1移动到图层上方,或仅将其添加到圆圈后面(或者使用下面的insertSublayer:在文本层后面插入圆圈:
你说得对,大卫。我应该分别设置字体和字体大小。我不需要设置为子层,因为我已经更改了文本的颜色。它现在工作得很好:)谢谢你的链接。它肯定会在将来帮助我:)