gpt4 book ai didi

cocoa - `-saveGraphicsContext` 和 `-restoreGraphicsContext` 的存在如何导致 10.10 中出现这些问题?

转载 作者:行者123 更新时间:2023-12-03 17:48:27 24 4
gpt4 key购买 nike

我们有一个自定义的NSPopUpButtonCell,并重写此方法:

- (void)drawBorderAndBackgroundWithFrame:(NSRect)cellFrame inView:(NSView*)controlView
{
[[NSGraphicsContext currentContext] saveGraphicsState];
CGFloat strokeWidth = 1;
cellFrame = NSInsetRect(cellFrame, strokeWidth/2.0, strokeWidth/2.0);

NSBezierPath* rectanglePath = [NSBezierPath bezierPathWithRoundedRect:cellFrame xRadius:2 yRadius:2];
rectanglePath.lineWidth = strokeWidth;

if (self.horizontalImageOffset != 0)
{
CGRect stateImageRect = [self stateImageRectForBounds:cellFrame];
CGFloat verticalSeparatorX = NSMaxX(stateImageRect);

NSBezierPath* verticalSeparator = [NSBezierPath bezierPath];
[verticalSeparator moveToPoint:NSMakePoint(verticalSeparatorX, NSHeight(cellFrame) - strokeWidth)];
[verticalSeparator lineToPoint:NSMakePoint(verticalSeparatorX, strokeWidth + 1)];
verticalSeparator.lineWidth = strokeWidth;

[verticalSeparator stroke];
}

[NSGraphicsContext restoreGraphicsState];
}

问题是,当我将此类引入我的项目时,它会使我的另一个(不相关的) View 消失 - 例如,无法正确绘制

enter image description here

如果我注释掉 -saveGraphicsState-restoreGraphicsState 它可以正常工作并正确绘制我的其他 View

enter image description here

这里可能出了什么问题?

编辑:更重要的是,10.11 和 10.12 上的队友没有看到此问题

最佳答案

我认为你应该打电话

[NSGraphicsContext saveGraphicsState];

不是

[[NSGraphicsContext currentContext] saveGraphicsState];

关于cocoa - `-saveGraphicsContext` 和 `-restoreGraphicsContext` 的存在如何导致 10.10 中出现这些问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com