问题标签 [appkit]
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 - AppKit 中 UIKit 的 [NSString sizeWithFont:constrainedToSize:]
AppKit 中是否有任何等效的方法(对于 Mac OS X 上的 Cocoa)与 UIKit 的功能相同[NSString sizeWithFont:constrainedToSize:]
?
如果没有,我该如何获得将特定字符串限制为宽度/高度所需的空间量?
更新:下面是我正在使用的一段代码,我希望它会产生我想要的结果。
我希望输出宽度为 200,高度大于单行的高度,但它会产生:
谢谢!
python - 从python中的NSImage中提取位图数据
我正在使用来自 NSImage 的数据构建 wx.MemoryDC,但生成的代码非常缓慢。在我看来,TIFFRepresentation -> ImageFromStream步骤是减慢速度的步骤。有什么办法可以避免这一步(所有这些流式传输),并直接从 NSImage 数据初始化 MemoryDC 吗?这是示例代码:
cocoa - NSTableView:如何更新显示的工具提示?
对于我的 NSTableView,我已经定义了
这确实返回了我想要显示的字符串,并且 NSTableView 确实将该字符串显示为工具提示。
问题是在显示工具提示时,我在同一个表格单元格中单击鼠标,这将导致上述方法返回不同的字符串。但是,我似乎无法弄清楚如何告诉表格它需要更新正在显示的工具提示。
我确实尝试调用 -removeAllToolTips,但正如预期的那样,它什么也没做。
我可以通过调用 [sender setToolTip:@""]; 使工具提示消失 虽然,它突然消失了,而不是一个很好的、缓慢的淡出。
但是,除非我移动鼠标并等待,否则工具提示不会与更新的文本一起重新出现......这不是我想要的行为。
有没有办法告诉表格它需要更新正在显示的工具提示?
关于如何更好地处理这个问题的任何其他想法或想法?
objective-c - Subviews disappearing on completion of awakeFromNib
I have a view with a NSBox subview (with CA enabled for shadow) and I'm trying to add my NSView subclass to the box dynamically during awakeFromNib.
There will be a varying number of these NSViews depending on the user so I've made some code that determines how many rows and columns to make to arrange them nicely in the box. (I already considered a NSMatrix but it doesn't layout things the way I intend to)
The problem is that after the awakeFromNib method finishes, the subviews suddenly disappear! I have put plenty of NSLog statements to try and track it down and all I'm finding out is that the subviews are clearly being added to the NSBox before they disappear. When running the app the subviews appear just briefly then disappear when the animation has finished.
Here is my awakeFromNib method:
Any help on this one will be greatly appreciated!
Steve
objective-c - 以编程方式调整 NSSplitView 的大小
我曾经使用并喜欢 RBSplitView,但是我未能以编程方式重新实现它,因为某个版本的 xcode 不再支持 IB 插件。
因此我回到使用 NSSplitView。NSSplitView 可以满足我的需要,问题是 NSSplitView 的 autoSave 被破坏了。所以我决定自己实现它。
我目前正在做的事情是调整 NSSplitView 的 1 个子视图的大小。
调整 NSSplitView 大小的正确方法是什么?- setPositionOfDivider:itIndex: 应该是要走的路(没试过),但是我不知道如何获得分隔线的当前位置。
- 提前致谢
cocoa - 当 LSUIElement 设置为 YES 时如何处理快捷方式?
何时LSUIElement
设置为NO
大多数快捷方式由应用程序的主菜单处理。但是当LSUIElement
设置为时YES
,没有主菜单,然后没有常用快捷方式转发给第一响应者。
天真的解决方案将覆盖performKeyEquivalent:
每个视图/窗口类。但我只想处理常见的快捷方式,而不是特殊的快捷方式。所以,我正在寻找更好的解决方案。
objective-c - Cocoa:区分输入设备/scrollWheel:作为鼠标滚轮和触控板
我正在寻找一种方法来可靠地区分[NSResponder scrollWheel:]
用户输入设备是否具有一维滚轮或二维触控板/magicMouse?
首先,我想实现不同的行为。但是仅仅看一下 deltaXNSEvent
会有点弱。有什么建议么?
objective-c - 为什么文本字段中闪烁的光标会导致调用 drawRect?
我的程序中有以下视图层次结构设置。
当用户单击 TextField 时,其中的光标开始闪烁。在 MyCustomView 上每次闪烁 drawRect 都会被调用。没什么大不了的,但我想知道为什么?
在 MyCustomOpaqueView 我实现 isOpaque 像这样,
我认为如果传递给 drawRect 的 NSRect 完全被不透明视图遮挡,这将阻止消息发送到 MyCustomView 中的 drawRect,但是当光标闪烁时,MyCustomView 仍然会发送带有 NSRect 的 drawRect 消息,完全在不透明视图后面。
我错过了一个关键概念还是这是闪烁光标的怪癖?
objective-c - NSImage -lockFocusFlipped 的奇怪问题:
我正在使用NSImage
's-lockFocusFlipped:
方法对图像进行一些绘图。我的代码如下所示:
这段代码在一定程度上起作用。我可以确认上下文确实被翻转了,因为[[NSGraphicsContext currentContext] isFlipped]
返回YES
,也因为shapeRect
绘制在正确的位置(使用左上角作为原点)。也就是说,NSShadow
似乎并不尊重上下文的翻转状态。将阴影偏移设置为(0, 3)
应该在翻转上下文时将阴影向下移动,但实际上将其向上移动(这在标准的非翻转上下文中会发生)。
这个问题似乎特定于-lockFocusFlipped
,因为当我使用相同的代码将相同的代码绘制到CALayer
具有翻转坐标系的 a 中时,阴影绘制得很好(尊重翻转)。上的文档-lockFocusFlipped
似乎也很模糊。NSImage
这就是类文档中所说的全部内容:
使用指定的翻转状态准备图像以接收绘图命令。
我还在Snow Leopard AppKit 发行说明中找到了这个说明:
在某些情况下,例如直接通过 NSLayoutManager 进行绘制,需要翻转上下文。为了涵盖这种情况,我们添加
- (void)lockFocusFlipped:(BOOL)flipped;
这不会改变图像本身的状态,只会改变焦点锁定的上下文。这意味着 (0,0) 在左上角,沿 Y 轴的正值在锁定上下文中向下。
在这种情况下,似乎没有任何文档解释NSShadow
's 的行为。并且通过进一步的测试,似乎NSGradient
并不尊重两者使用的绘图上下文的翻转状态NSImage
。
非常感谢任何见解:-)
objective-c - 在 Mac App Store 中使用未记录的类,例如 NSPreferences
NSPreferences
Safari 和 Mail 似乎使用了一个未记录的类,它可以简化多页首选项页面的创建。
有没有人NSPreferences
在提交给 Mac App Store 的应用程序中使用过或类似的未记录但有用且有趣的功能?