2013-10-29 54 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];' 是錯誤的。爲了測試,我使用另一個比例尺,現在一切都很好。 謝謝 –