2013-10-29 2 views
0

CATextLayer로 변경되는 텍스트를 애니메이션으로 적용하려고합니다.AutoLayout 및 CATextLayer iOS7

intValueLayer = [CATextLayer layer]; 
    [intValueLayer setFrame:self.lblIntPart.bounds]; 
    [[self.lblIntPart layer] addSublayer:intValueLayer]; 

내보기에서 AutoLayout을 사용하고 있는데 setFrame 메서드가 제대로 작동하지 않는다는 것을 알고 있습니다. self.lblIntPart보다 작은 CATextLayer의 제 경우 프레임에서, 어떻게 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"]; 
+0

NSLog (@ "% @", NSStringFromCGRect (intValueLayer.frame))의 결과는 무엇입니까? NSLog (@ "% @", NSStringFromCGRect (self.lblIntPart.frame)); NSLog (@ "% @", NSStringFromCGRect (self.lblIntPart.bounds)); – ManicMonkOnMac

답변

0

문제를 재현하려고 한 후, 여기에 내가 이해입니다 :

모든 방법처럼 보인다.

아마도 레이블 프레임이 크고 기본 CATextLayer 글꼴 속성이 프레임에 완전히 맞지 않습니다.

CATextLayer의 속성을 조정 해보십시오.

[intValueLayer setFont:(__bridge CFTypeRef)([UIFont systemFontOfSize:17])]; 
[intValueLayer setFontSize:17]; 

레이블을 그대로 사용하면 속성과 일치하도록

+0

이 방법을 사용했지만 제약 조건에 따라 폭 레이블을 편집 한 후 새 글꼴 크기 '[intValueLayer setFontSize : 96.0f * scale]; ' 이 잘못되었습니다. 테스트를 위해 나는 다른 척도를 사용하고 모든 것이 잘 보입니다. 감사합니다. –