On 20 Jul 2011, at 2:30 PM, Gabriel Roth wrote:
> My application displays a non-editable text string in an NSTextField. When > the user adjusts a slider, the entire window and all its subviews—including > this text field—should resize smoothly. > > My first thought was to bind the font size of the text field to a property > and have that property set to a fixed ratio of the window's size, resetting > it whenever the window size changes. But when I implement this, the text > jiggles around as it's resized. > > My next thought was to convert the text field into an image (at some large > font size) and then scale the image up and down as the slider moves. But I > can't figure out how to create an image from a text field (or otherwise > generate an image of a string of text in a given font). > > Any thoughts on what avenue to pursue would be much appreciated. > > gr. This sounds like a perfect fit for Core Animation. Figure out which field(s) need to be resized. Then use code like this: myTextField.wantsLayer = TRUE; //Set up a CA Layer for this field. myTextField.layer.transform = CATransform3DMakeScale(1.5, 1.5); //Scale the text field to 150% By default, it should grow/shrink from the center of it's bounding rectangle. If you want it to grow/shrink (or rotate, or whatever) from a different point, set the anchorPoint property of the layer. If you want to change the duration of the animation from the default (0.25 sec) , or change the animation timing from the default of ease in, ease out, put the layer changes inside a CATransaction: myTextField.wantsLayer = TRUE; //Set up a CA Layer for this field. [CATransaction begin]; [CATransaction setAnimationDuration: 0.1]; //Change the duration to .1 seconds [CATransaction setAnimationTimingFunction: kCAMediaTimingFunctionLinear]; //Change the timing to linear myTextField.layer.transform = CATransform3DMakeScale(1.5, 1.5); //Scale the text field to 150% [CATransaction commit]; Disclaimer: I don't think I've actually used CATransaction exactly as shown above. I pulled this from the documentation, and haven't tested it. You could also set up an animator proxy to do this, or create a CABasicAnimation on the layer. Regards, Duncan Champney WareTo _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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/archive%40mail-archive.com This email sent to arch...@mail-archive.com