In my simple test project, an NSBezierPath is created and stroked.
-(id)initWithCoder:(NSCoder*)coder{
_path = [[NSBezierPath alloc] init];
create points
}
- (void)drawRect:(NSRect)dirtyRect {
bounds = [self bounds];
NSLog(@"\n\n bounds: %@\n\n", NSStringFromRect(bounds));
[[NSColor whiteColor] set];
[_path setLineWidth:07.0]; //default width = 1
[_path stroke];
bounds = [self bounds];
NSLog(@"\n\n emd bounds: %@\n\n", NSStringFromRect(bounds));
}
A breakpoint at the end of drawRect shows that it runs twice. After the second
pass, the view appears, as it should.
Between passes, bounds is changed somehow, as shown by NSLog at the start and
end of drawRect.
Since this will upset code that I will add later, I’d like to stop this.
_path is not changed in either pass.
needsToDrawRect: is not used.
I’m using Xcode 6.1.1 in OSX 10.9.5.
I have not been able to find a reason for this behavior. . I don’t know how to
reveal the point between passes where bounds is actually changed. It does not
happen in any other NSView projects of mine; drawRect runs only once in them
I would like to prevent the second pass, or at least prevent the bounds change
between passes. I’m reluctant to try restoring bounds to its first value. I
appreciate Ken Thomases’ warning in a previous subject not to change bounds in
drawRect.
Can anyone explain why this happens? Is it possible to suppress it without
destroying whatever good it does?
Thanks,
Nick
_______________________________________________
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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to arch...@mail-archive.com