我有一个NSImageView从应用程序包中加载图像。调整大小的NSImageView不重绘
它是设置为这样:
coverImage.image = [NSImage imageNamed:@"themeSignEnd.png"];
coverImage.imageScaling = NSImageScaleNone;
coverImage.imageAlignment = NSImageAlignLeft;
所述的图像显示就好了。
的NSImageView的大小计算基于其他一些因素,然后使用此代码设置:
coverImage.frame = CGRectMake((1280 - 869)/2, 0, 869 * percentage, 800);
这工作完全正常的第一次完成(在应用程序启动时)。
NSImageView的大小和包含的图像被切断在适当的边界。
不幸的是,当我尝试在应用程序运行时调整NSImageView的大小(使用上面的相同代码)时,它不会明显更新。
NSLogging的coverImage.frame
显示帧本身已正确更新。然而,这个观点似乎并没有重新绘制 - 无论是在缩小还是在增长框架时。此外,当我退出并重新启动应用程序时,NSImageView绘制正确的边框。
什么会导致此类行为?
是否有可能NSImageView是根本不重绘?如果是这样,我该如何强制重画?
是否有任何其他的NSImageView怪癖,我错过了哪些可以导致这种行为?
编辑:
原来当ImageFrameStyle
属性设置为NSImageFrameNone
这个错误只发生。如果该框架设置为其他任何内容,则会重绘得很好。不幸的是,我们需要在没有框架的情况下显示图像。
NSImageViews有和没有框架,可以解释这一点渲染有任何区别?
你是从主线程更新视图的框架? –
@Rob - >是的,我是。 – 0x90
我希望有一个解决方案。如果您发现了任何新内容,请发布。改变框架样式对我没有任何影响。有趣的是,调整大一些还是会画出我的形象并更新它。如果我调整较小,它会停止更新。 – spartygw