Re: Converting views to use layer backing
Re: Converting views to use layer backing
- Subject: Re: Converting views to use layer backing
- From: Kenneth Baxter <email@hidden>
- Date: Sat, 19 Oct 2013 07:57:25 +0000 (GMT)
Thanks Gideon.
Turning on the layer backing for all those levels did fix the redrawing problem.
I didn't find out how to fix the layer drawing when the bounds origin has been moved, but I did work out a workaround.
I added an instance variable to my view (the scrollview's document view):
@property (assign) NSPoint originOffset;
I set that to the offset from the origin to where I want the bounds origin to be, then in drawRect, I do:
CGContextRef currentContext = NSGraphicsContext.currentContext.graphicsPort;
CGContextSaveGState(currentContext);
CGContextTranslateCTM(currentContext, self.originOffset.x, self.originOffset.y);
...do all my drawing relative to where the bounds origin should be
CGContextRestoreGState(currentContext);
That gets my view drawing properly, but I still have the problem of positioning my subviews, so I created a view that I will never draw as follows:
@implementation OffsetView
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
self.layerContentsRedrawPolicy = NSViewLayerContentsRedrawNever;
}
return self;
}
- (BOOL)isFlipped {
return YES;
}
@end
Then in my main view, I add the following:
OffsetView *offsetView = [[OffsetView alloc] initWithFrame:self.bounds];
[offsetView setBoundsOrigin:NSMakePoint(-self.originOffset.x, -self.originOffset.y)];
[self addSubview:offsetView];
And now I just add my subviews to the offset view instead of the main view.
This does seem like a nasty hack to get the result I want, but it works, and nobody else has suggested any alternative, so I'll just run with it.
Thanks again for the help.
Ken
On Oct 18, 2013, at 03:20 PM, Gideon King <email@hidden> wrote:
I knew I was going to want to do something like that myself so created a small test project.
...
Can anyone else help with how to draw a layer backed view where the bounds origin has been shifted?
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden