【发布时间】:2011-10-26 02:29:22
【问题描述】:
我有一个 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 时发生。如果框架设置为其他任何内容,它会重新绘制就好了。不幸的是,我们需要在没有框架的情况下显示图像。
在渲染 NSImageView 时是否有任何不同可以解释这一点?
【问题讨论】:
-
你是从主线程更新视图的框架吗?
-
我希望有一个解决方案。如果您发现了任何新内容,请发布。更改框架样式对我没有影响。有趣的是,调整更大的尺寸仍然会绘制我的图像并更新它。如果我将大小调整为更小,它将停止更新。
标签: cocoa nsimageview