Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSView drawRect和视网膜图像_Objective C_Macos_Cocoa_Core Graphics - Fatal编程技术网

Objective c NSView drawRect和视网膜图像

Objective c NSView drawRect和视网膜图像,objective-c,macos,cocoa,core-graphics,Objective C,Macos,Cocoa,Core Graphics,因为,我需要一些高级菜单栏项,所以我使用自定义NSView子类作为菜单栏项的视图 在drawrect中,我正在绘制一些简单的nsimage,它可以很好地用于正常显示,但在视网膜显示上,它加载的图像更小(是的,我有@2x艺术品) 代码: - (void)drawRect:(NSRect)dirtyRect { [self.statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:self.isHighlighted

因为,我需要一些高级菜单栏项,所以我使用自定义NSView子类作为菜单栏项的视图

在drawrect中,我正在绘制一些简单的nsimage,它可以很好地用于正常显示,但在视网膜显示上,它加载的图像更小(是的,我有@2x艺术品)

代码:

 - (void)drawRect:(NSRect)dirtyRect
{

    [self.statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:self.isHighlighted];
    [icon scalesWhenResized];
    icon = self.isHighlighted ? self.alternateImage : [images objectAtIndex:index];
    NSSize iconSize = [icon size];

    NSRect bounds = self.bounds;
    CGFloat iconX = roundf((NSWidth(bounds) - iconSize.width) / 2);
    CGFloat iconY = roundf((NSHeight(bounds) - iconSize.height) / 2);
    NSPoint iconPoint = NSMakePoint(iconX, iconY);
    [icon drawAtPoint:iconPoint fromRect:bounds operation:NSCompositeSourceOver fraction:1];
}
我用石英调试和真正的视网膜Macbooks进行了测试,除了menubar中的这个小图像,一切都很好

更新:

self.images = [NSArray arrayWithObjects:[NSImage imageNamed:@"1.png"],[NSImage imageNamed:@"2.png"],[NSImage imageNamed:@"3.png"],[NSImage imageNamed:@"4.png"],[NSImage imageNamed:@"5.png"],[NSImage imageNamed:@"6.png"],[NSImage imageNamed:@"7.png"],[NSImage imageNamed:@"8.png"],[NSImage imageNamed:@"9.png"],[NSImage imageNamed:@"10.png"],[NSImage imageNamed:@"11.png"],[NSImage imageNamed:@"12.png"],[NSImage imageNamed:@"13.png"],[NSImage imageNamed:@"14.png"],[NSImage imageNamed:@"15.png"],[NSImage imageNamed:@"16.png"],[NSImage imageNamed:@"17.png"],[NSImage imageNamed:@"18.png"],[NSImage imageNamed:@"19.png"],[NSImage imageNamed:@"20.png"],[NSImage imageNamed:@"21.png"],[NSImage imageNamed:@"22.png"],[NSImage imageNamed:@"23.png"],[NSImage imageNamed:@"24.png"],[NSImage imageNamed:@"25.png"],[NSImage imageNamed:@"26.png"],
                   nil];

这可能是在黑暗中拍摄的,但如果您正在加载带有扩展的图像,请尝试将其删除

而不是:
[NSImage ImageName:@“icon.png”]
do
[NSImage ImageName:@“icon”]


Xcode将“Combine High-Resolution Artwork”(合并高分辨率艺术品)设置为“是”,这将使您的图像合并到TIFF文件中。因此,捆绑包中不存在PNG文件,因此不会加载。

这可能是一个暗中拍摄,但如果加载带有扩展名的图像,请尝试将其删除

而不是:
[NSImage ImageName:@“icon.png”]
do
[NSImage ImageName:@“icon”]


Xcode将“Combine High-Resolution Artwork”(合并高分辨率艺术品)设置为“是”,这将使您的图像合并到TIFF文件中。因此,捆绑包中不存在PNG文件,因此不会加载。

nsimage对象数组、创建宽度IMAGANNED方法nsimage对象数组、创建宽度IMAGANNED方法