问题标签 [nsview]
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.
cocoa - 如何在 Cocoa 中实现非常大的滚动视图
在 Cocoa 中创建尺寸约为 15000 像素的视图是否明智?(当然,在 a 中一次只能看到该视图的一小部分NSScrollView
)
Interface Builder 的大小限制为 10000 像素。这是人为的限制还是背后有充分的理由?
我应该只创建巨大的视图并让NSScrollView
/Quartz 担心有效地渲染它(我的视图是在请求的区域内以编程方式绘制的drawRect
)还是冒着过度使用内存和其他问题的风险?(例如,OS X 是否可以随时尝试将整个视图的位图缓存到视频内存中?)
cocoa - 为什么我不应该在旋转的 NSView 子类上使用光标矩形?
我正在编写一个自定义 NSView 子类。我的窗口中有这个类的几个实例,其中大部分是通过调用 NSView 的 setFrameRotation 方法来旋转的。在此视图的矩形区域上时,我还需要更改光标。
NSView 的 addCursorRect方法的文档包含以下倾斜警告:
光标矩形不受超级视图的裁剪,也不打算与旋转视图一起使用。
嗯,嘘。但是,我肯定会喜欢使用它们,因为它们是比我必须使用的 hack更好的解决方案。而且,你知道吗?我试过了,它似乎工作正常。然而,这个警告让我害怕;我担心魔鬼会在以后的某个时候来收取他应得的钱。因此,我的问题是:有谁知道为什么光标矩形不适合与旋转视图一起使用?
cocoa - NSColorWell 子类没有得到 mouseMoved 事件
我正在尝试在我的 Cocoa 应用程序中实现颜色选择器。(是的,我知道 NSColorPanel。我不太喜欢它。滚动我自己的重点是我认为我可以做得更好。)
这是我的选择器当前状态的图片。
(来源:ryanballantyne.name)
色轮周围的井是 NSColorWell 子类。它们以编程方式实例化并通过调用色轮类上的 addSubView 添加到色轮视图(NSView 子类)。
我想这样做,以便您可以通过它们的把手拖动颜色井。当鼠标悬停在手柄上时,该旅程的开始是使光标变为张开的手。可悲的是,我不能为此使用光标矩形,因为我的大部分视图都是旋转的。因此,我必须使用 mouseMoved 事件并自己进行命中检测。
这是我正在尝试使用的鼠标事件代码:
我发现我的 mouseMoved 方法从未被调用过。进入和退出同上。但是,当我实现 mouseDown 时,确实会调用那个,所以至少有一些事件会影响到我,而不是我想要的事件。
有任何想法吗?谢谢!
cocoa - 折叠 NSSplitView 后如何修复视图的高度?
我在底部视图中有一个带有 NSScrollView 的 NSSplitView。问题是当我折叠,然后重新打开(取消折叠)底部视图时,滚动视图的高度超出了底部视图的高度,因此 scoll 视图的顶部被剪裁了。我已经将滚动视图和拆分视图设置为在 IB 的各个方向上自动调整大小。我是否需要在取消折叠后调整该滚动视图的高度,或者我是否设置了错误的调整大小属性,或者其他什么?下面是剪辑前后的图像。
折叠前:
折叠并重新打开后(注意底部视图中的滚动条被剪掉了)
objective-c - 在 NSView 中绘制图像
我有一个简单的 Obj C 程序,目前,它可以让你加载图像,绘制它,理论上应该让你缩放和旋转。我正在使用 NSAffineTranslations。
我希望图像被锁定在左上角(与左下角的 PS/PDF 标准相反),所以我使用 isFlipped,并调用 [afTrans scaleXBy:1.0 yBy:-1.0];
问题是由于某种原因,在第一次调用我的 drawRect 之后,转换不会发生。
当我加载图像时,它会出现,并且看起来正确。如果我更改窗口的大小(调用 drawRect),图像会绘制,但会颠倒和反转。这意味着转换没有生效。我第二次看不到任何数据的任何差异。
这是代码的精简版本:
ETA:这里还有一些可能相关的代码。
cocoa - 如何使 NSView 移动到所有 NSView 的前面
如何使 NSView 窗口向上移动到前面。我的应用程序有 3 个窗口,当我在其中一个窗口中按下一个按钮时,我希望另一个窗口移动到这个窗口之上。
cocoa - 当第一个移过第二个时,NSView 会在另一个 NSView 上留下工件
我有一个可以在其父视图中拖动的 NSView 子类。我通过在 mouseDragged 事件处理程序中调用 NSView 的 setFrameOrigin 和 setFrameRotation 方法来移动视图。每次调用都会移动和旋转视图。
我有一个超级视图包含的这些视图的多个实例。我遇到的问题是,当一个视图被拖到另一个视图上时,它会在它正在遮蔽的视图上留下伪影。我录制了一个简短的视频。不幸的是,由于视频压缩,伪影不是很明显。
我强烈怀疑这与同声翻译和旋转有关。Quartz Debug 显示,当另一个视图被拖过时,遮挡(或被遮挡)视图的矩形会更新(此处为视频);不知何故,这个矩形被绘图引擎误算了,所以应该重绘的部分视图不是。
踢球者是我不知道如何解决这个问题。我找不到任何方法来手动指定文档中的更新矩形,我也不确定这就是需要发生的事情。有任何想法吗?谢谢!
cocoa - 如何旋转 CALayer 支持的 NSView 子类
我有一个自定义 NSView 子类,我想用 Core Animation 制作动画。我已经(没有 CA)使用 NSView 的 setFrameOrigin 和 setFrameRotation 方法设置这些视图的位置和旋转。但是,无论我做什么,一旦我为视图添加了一个支持层,我就无法让它们旋转。
我试过使用 NSView 的 setFrameRotation 和 setFrameCenterRotation 方法。后者稍微移动视图,但不旋转其内容。前者没有效果。将由 CATransform3DRotate 创建的 CATransform3D 应用到视图层也没有效果。
问这个问题我感觉有点傻,因为这看起来应该很容易,但对于我的生活,我无法弄清楚如何让它发挥作用。有人,请让我拍拍我的额头,看看它是多么容易。:)
cocoa - NSMatrix 并仅自动调整某些单元格的大小?
我有一个有两列的 NSMatrix,当框架调整大小时,我不希望左列随之调整大小。有没有办法在不继承 NSMatrix 的情况下做到这一点?
我在想也许我应该只制作两个 NSMatrix 并将它们并排放置,一个将自动调整大小设置为 YES,一个设置为 NO。这是最合适的方法吗?
谢谢你的帮助。
PS 这个网站非常有帮助。谢谢大家的贡献。
objective-c - 未在添加的子视图上调用 drawRect
我正在尝试以编程方式创建一个带有自定义contentView
和一个自定义控件的窗口NSTextField
,但是我无法让这种窗口和视图的层次结构自行绘制。
我创建了一个自定义无边框窗口并覆盖它的setContentView
/contentView
访问器。这似乎工作正常,自定义 contentViewinitWithFrame
和drawRect
方法被调用,导致 contentView 正确绘制自己。
但是,一旦我尝试以编程方式添加自定义NSTextField
,contentView
它就不会被添加或绘制。通过说自定义,我的意思是我覆盖了它的指定初始化程序(initWithFrame:frame
- 仅用于自定义字体设置)和 drawRect 方法,如下所示:
自定义 contentView 的初始化程序如下所示:
我已经为此苦苦挣扎了几个小时,因此非常感谢任何指针。更多代码可根据要求提供。)