问题标签 [nsimageview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
929 浏览

objective-c - NSImageView 中的图像和按钮位置错误

我将一个按钮和一个图像分配到相同的位置 (0, 0),但它们绘制在不同的位置。为什么会这样?

这是我的代码:

这是构建后的结果:

截屏

0 投票
2 回答
380 浏览

objective-c - 在代码中使用 Interface Builder 的系统媒体文件

我对 IB 库的“媒体”选项卡中的几个图像和声音文件有疑问:如何在代码中使用它们?我想将 a 的图像更改NSImageVewNSRevealFreestandingTemplate,但是如何访问它?我很确定肯定有比创建隐藏图像视图并从那里拉出更好的方法。有任何想法吗?

谢谢!

0 投票
2 回答
1927 浏览

objective-c - 使用 NSImageView 快速连续显示多张图片

我有一个应用程序,在一个窗口中,有一个 NSImageView。用户应该能够将任何文件/文件夹(不仅是图像)拖放到图像视图中,因此我将 NSImageView 类子类化以添加对这些类型的支持。

我选择 NSImageView 而不是普通视图的原因是因为我还想在用户将鼠标悬停在准备删除的文件上时显示动画(比如指向向下和上下移动的箭头)。我的问题是:什么是最好的方法(最有效、最快、最少的 CPU 使用率等)来做到这一点?

事实上,我已经做到了,但让我提出这个问题的原因是,当我将图像设置为以低于 0.02 秒的速度变化时,它开始滞后。这是我的做法:

在 NSImageView 子类中:

  • 有一个 ivar: NSTimer* animTimer;
  • 覆盖 awakeFromNib,调用 [super awakeFromNib] 并使用 NSImage 将图像加载到数组中(大约 45 个图像)
  • 每当用户输入文件时,启动频率 = 0.025 的 animTimer(更少并且滞后),以及设置数组中下一个图像的选择器(称为 drawNextImage)
  • 每当用户退出或结束拖放时,调用 [animTimer invalidate] 停止更新图像

这是我在子类中设置图像的方式:

那么,我怎样才能足够快地做到这一点呢?我希望频率约为 0.01 秒,但滞后时间小于 0.025,所以这就是我目前设定的。哦,我的图像尺寸正确(+ 或 - 一个像素或其他东西)并且它们在 .png 中(我需要透明度 - 例如,jpeg 不会这样做)。

编辑:

我试图遵循 NSResponder 的建议,并将我的方法更新为:

我还将这个方法和其他拖放方法从 NSImageView 子类移到了我已经拥有的 NSView 子类中。一切都完全一样,除了超类和这个方法。我还修改了一些常量。

在我对此的早期测试中,我收到了一些错误/警告消息,这些消息并没有停止执行谈论 NSGraphicsContext 或其他内容。这些现在已经消失了,但你知道的。我完全不知道他们为什么出现以及他们的意思。如果他们再次出现,我会担心他们,而不是现在:)

编辑2:

这就是我现在正在做的事情:

这里的问题是在调用 drawRect 时调用 drawCurrentImage (看,它实际上比我想象的更容易解决)。

现在,我必须说我没有用合成图像尝试过这个,因为我找不到一种好的快速方法来以我想要的方式(一个相邻的)合并 40 多个图像。但是对于那些不感兴趣的人,我修改了它以与我的 NSImageView 子类做同样的事情(从数组中读取 40 多张图像并显示它们),我发现没有减速带:NSView 与 NSImageView 一样滞后于 0.025 以下。另外我在使用核心动画时发现了一些问题(图像是在奇怪的地方而不是我告诉她的地方绘制的)和一些关于 NSGraphicsContext 的警告,我根本不知道如何解决(我是一个完整的使用Objective-C工具进行绘图等方面的菜鸟)。所以目前我正在使用 NSImageView,除非我找到一种方法来合并所有这些图像并尝试使用 NSView。

0 投票
1 回答
12618 浏览

xcode - 在 NSImageView 上设置图像

我的程序有问题。基本上我想要的是,我有 2 个 nssecuretextfield,我有一个按钮。如果两者相等,它会在 nsimageview 上显示一个图像,否则它会显示另一个图像。这可能很容易,但我是 mac 编程新手,

.h 文件:

.m 文件:

谁能帮帮我?我试过了,它只显示 1 张图像,即使它是对还是错。

0 投票
1 回答
2778 浏览

objective-c - NSImageView + 背景颜色

我有这样的要求,

有一个 NSIMageView 并且会在定时器的基础上频繁变化,在调整大小时,它需要保持纵横比,所以 Image 可能不会占据 Image 的整个帧,这种情况下,我需要将背景颜色显示为黑色,

任何人都可以帮助我如何实现这一点,在谷歌上搜索的一种方法是拥有 NSImageView 的子类,但不知道,什么会影响性能,因为图像经常变化,

0 投票
2 回答
3507 浏览

objective-c - 我的 NSImageView 未检测到 mouseDown

我一直在寻找这个问题的答案,虽然我已经完成了这些步骤,但我似乎仍然无法调用 mouseDown 方法。我想要的是当用户单击并按住图像时,它应该打印出“鼠标按下!”。(最终我想要做的是用户单击并按住图像以播放声音,当他们放手时声音会停止)。

这就是我所拥有的。我的标题:

我的班级:

这看起来对吗?如果是这样,那么是否还有其他问题可能会干扰它?没有,我该怎么办?

多谢!

0 投票
4 回答
2011 浏览

cocoa - 调整大小的 NSImageView 不重绘

我有一个 NSImageView 从应用程序包中加载图像。

它是这样设置的:

图像显示得很好。

NSImageView 的大小是根据其他几个因素计算的,然后使用以下代码进行设置:

这在第一次完成时(应用程序启动时)工作得很好。

NSImageView 采用大小,并且包含的​​图像在适当的边框处被切断。

不幸的是,当我尝试在应用程序运行时调整 NSImageView 的大小时(使用上面的相同代码),它不会明显更新。

NSLoggingcoverImage.frame显示框架本身已正确更新。但是,视图似乎没有被重绘——无论是在缩小还是在扩大框架时。此外,当我退出并重新启动应用程序时, NSImageView 会绘制正确的边框。

什么可能导致这种行为?

NSImageView 是否有可能根本没有重绘?如果是这样,我该如何强制重绘?

是否还有其他我错过的 NSImageView 怪癖会导致这种行为?

编辑:

事实证明,这个错误只发生在ImageFrameStyle属性设置为NSImageFrameNone. 如果框架设置为其他任何内容,它会重新绘制就好了。不幸的是,我们需要在没有框架的情况下显示图像。

NSImageViews 的渲染有无框架可以解释这一点有什么不同吗?

0 投票
1 回答
2773 浏览

macos - 使用 NSImageView (cocoa/OSX) 创建内存高效的缩略图

对于极端测试用例,我正在从通常为 512x512 甚至 4096 x 2048 的大图像创建小型 NSImageViews(32x32 像素)。我的问题是,在我的极端测试用例中,当我显示缩略图时,我的应用程序内存占用似乎增加了 15MB 以上,这让我认为 NSImage 以 4096x2048 而不是 32x32 的形式存储在内存中,我想知道是否有是避免这种情况的一种方法。这是我创建 NsImageView 的过程:

• 首先,我使用 initByReferencingFile 创建一个 NSImage:(指向 4096x2048 .png 文件)

• 接下来我通过调用 initWithFrame 来初始化 NSImageView:

• 然后我调用 setImage: 将我的 NSImage 分配给 NSImageView

• 最后我将 NSImageView 设置为 NSScaleProportionally

我显然没有做任何事情来强制 NSImage 缩小到 32x32,但我很难找到一个好的方法来处理这个问题。

0 投票
1 回答
938 浏览

nstableview - NSTableView 列中 NSImageView 上的可可绑定不会自动更新

在我的可可应用程序中有一个 NSTableView(基于 10.7 lion 视图的 tableview)只包含一列,其中的单元格是自定义的 NSTableCellView,其中有几个视图,其中一个是 NSImageView。

我的数据模型有一个整数状态变量,我使用可可绑定和 NSValueTransformer 为这个 NSImageView 提供不同的 NSImage。

问题是,图像不会自动更新。状态更改后,图像仅反映重新加载列表后的更改。

谢谢你的帮助 :)

0 投票
1 回答
244 浏览

cocoa - 核心动画不起作用。物体消失

AnimationImageView是 的子类NSImageView

animationImageView对象消失 5 秒(动画持续时间),然后突然出现在初始位置。