Thanks Graham

It took a bit of trial and error, but scaleUnitSquareToSize seems to do what I want. I ripped out all the transform code and just wrote a simple override to setFrame for the page view

- (void) setFrame:(NSRect) inFrame
{
        NSSize          currentSize             = [self frame].size;
        
        float           scale                   = inFrame.size.height / 
currentSize.height;
        
        [self scaleUnitSquareToSize: NSMakeSize(scale, scale)];
        [super setFrame: inFrame];
}


Much easier

- Ken

On May 21, 2009, at 10:59 PM, Graham Cox wrote:


On 22/05/2009, at 12:52 PM, Ken Tozier wrote:

- (void) drawRect:(NSRect) inRect
{
        NSAffineTransform       *transform              = [self transform];
        
        [transform concat];
        
        [[NSColor whiteColor] set];
        NSRectFillUsingOperation([self frame], NSCompositeSourceOver);
        
        [[NSColor blackColor] set];
NSFrameRectWithWidthUsingOperation([self frame], 1, NSCompositeSourceOver);
}


Setting a transform in -drawRect: will only apply it to whatever is drawn within that method. That doesn't include the subviews.

What are you trying to do? If you need to scale the page view then use -scaleUnitSquareToSize: and adjust the frame. To translate use a scrollview. To rotate, use -rotateToAngle:

--Graham



_______________________________________________

Cocoa-dev mailing list ([email protected])

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 [email protected]

Reply via email to