Skip navigation.
 
mlRe: CATextLayer and CAConstraint
FROM : Aaron Tait
DATE : Sun Nov 18 19:02:15 2007

Bill, I tried your solution but it did not help. Fortunately however, 
I have found a working solution. It looks like the constraints mess 
with the sizing and bounds of my CATextLayer making it only 1 unit in 
size. I have added the following constraint and it produces a 
desirable result:
   [fileNameLayer addConstraint:[CAConstraint 
constraintWithAttribute:kCAConstraintWidth relativeTo:@"superlayer" 
attribute:kCAConstraintWidth]];

-Aaron

On 18-Nov-07, at 8:26 AM, Bill Dudney wrote:

> Hi Aaron,
>
> When trying to manipulate layers like this its best if you use a 
> layer hosting view rather than a layer backed view. If you rely on 
> the layer the view creates for you its often the case that you get 
> weird behavior like this.
>
> Instead in your awakeFromNib method you can make your view layer 
> hosting;
> myLayer = [CALayer layer];
> // other myLayer initilization
> [myView setLayer:myLayer];
> [myView setWantsLayer:YES];
>
> then you can add sublayers as in your addFileNameLayer: below and 
> everything should work.
>
> As an alternative you could simply create a text field as a label 
> and add it as a subview of your current setup and it will become 
> layer backed since you are adding it to a view that is layer backed.
>
> HTH,
>
> -bd-
> http://bill.dudney.net/roller/objc
>
> On Nov 18, 2007, at 1:00 AM, Aaron Tait wrote:
>

>> I've been pulling my hair out trying to get a CATextLayer to work 
>> with a couple of CAConstraints. The following is a method 
>> implemented in a layer backed view and the following call is made 
>> in the view's awakeFromNib:
>> self.layer.layoutManager = [CAConstraintLayoutManager layoutManager];
>>
>> The method is as follows:
>>
>> -(void)addFileNameLayer:(NSString *)fileName
>> {
>>     CATextLayer * fileNameLayer = [CATextLayer layer];
>>     fileNameLayer.string = fileName;
>>     fileNameLayer.name = @"fileNameLayer";
>>     fileNameLayer.fontSize = 14.0;
>>     fileNameLayer.alignmentMode = kCAAlignmentCenter;
>>     fileNameLayer.wrapped = YES;
>>     fileNameLayer.anchorPoint = CGPointMake(0.5, 0.5);
>>     fileNameLayer.bounds = CGRectMake(0, 0, 320, 50);
>>     [fileNameLayer addConstraint:[CAConstraint 
>> constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" 
>> attribute:kCAConstraintMidX]];
>>     [fileNameLayer addConstraint:[CAConstraint 
>> constraintWithAttribute:kCAConstraintMidY relativeTo:@"superlayer" 
>> attribute:kCAConstraintMidY offset:-100]];
>>     [self.layer addSublayer:fileNameLayer];
>> }
>>
>> When the code executes, it displays nothing. I also add another 
>> plain old CALayer before I call this method with similar 
>> constraints and it works out fine. Anyone help would be appreciated.
>>
>> -Aaron
>> _______________________________________________
>>
>> Cocoa-dev mailing list (<email_removed>)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>>
>> This email sent to <email_removed>

>

Related mailsAuthorDate
mlCATextLayer and CAConstraint Aaron Tait Nov 18, 09:00
mlRe: CATextLayer and CAConstraint Bill Dudney Nov 18, 14:26
mlRe: CATextLayer and CAConstraint Aaron Tait Nov 18, 19:02
mlRe: CATextLayer and CAConstraint Scott Anguish Nov 19, 10:12
mlRe: CATextLayer and CAConstraint Paul Arthur Henrio… Nov 22, 16:53