自动布局和 CATextLayer iOS7
Posted
技术标签:
【中文标题】自动布局和 CATextLayer iOS7【英文标题】:AutoLayout and CATextLayer iOS7 【发布时间】:2013-10-29 14:44:03 【问题描述】:我正在尝试使用 CATextLayer 为文本更改设置动画。
intValueLayer = [CATextLayer layer];
[intValueLayer setFrame:self.lblIntPart.bounds];
[[self.lblIntPart layer] addSublayer:intValueLayer];
我在视图上使用 AutoLayout,我知道 setFrame 方法无法正常工作。在我的情况下,CATextLayer 的框架小于 self.lblIntPart 。那么,如何向我的 TextLayer 添加约束或使用与 self.llbIntPart 相同的框架显示它。
谢谢!
所有方法看起来像:
intValueLayer = [CATextLayer layer];
[intValueLayer setFrame:self.lblIntPart.bounds];
[[self.lblIntPart layer] addSublayer:intValueLayer];
[intValueLayer setAlignmentMode:@"center"];
[intValueLayer setForegroundColor:self.category.colour.colour.CGColor];
[intValueLayer setFont:CFBridgingRetain(@"DilleniaUPCBold")];
[intValueLayer setFontSize:96.0f * scale];
intValueLayer.contentsScale = [UIScreen mainScreen].scale;
[intValueLayer setString:@"0"];
【问题讨论】:
NSLog的输出是什么(@"%@",NSStringFromCGRect(intValueLayer.frame)); NSLog(@"%@",NSStringFromCGRect(self.lblIntPart.frame)); NSLog(@"%@",NSStringFromCGRect(self.lblIntPart.bounds)); 【参考方案1】:在尝试重现您的问题后,这是我的理解。
可能您的 Label 框架很大,并且默认 CATextLayer 字体属性不完全适合框架。
尝试调整 CATextLayer 的属性。
[intValueLayer setFont:(__bridge CFTypeRef)([UIFont systemFontOfSize:17])];
[intValueLayer setFontSize:17];
如果您按原样使用标签,它会匹配属性。
【讨论】:
我使用了这种方法,但是您的代码给了我一个想法,即在通过约束编辑宽度标签后,新的字体大小[intValueLayer setFontSize:96.0f * scale];
是错误的。对于测试,我使用了另一个比例,现在一切看起来都很好。谢谢以上是关于自动布局和 CATextLayer iOS7的主要内容,如果未能解决你的问题,请参考以下文章
为啥iOS7中的bottomLayoutGuide和automaticAdjustsScrollViewInsets没有考虑UIToolBar的高度(带有自动布局)