问题标签 [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.
objective-c - 在 mac 包中嵌入字体
我有一个正在编写的程序。我想使用一种花哨的字体。我可以将我的字体嵌入到我的包中并从那里使用它。
我的代码...
objective-c - 打印一个 NSDocument
我正在尝试打印文档。该文档是一个 NSImageRep 数组,或者是一个 NSPDFImageRep,它有多个页面。我无法弄清楚如何使用 NSPrintOperation 类来打印它。
NSPrintOperation 似乎需要一个 NSView 来打印。我是否需要手动将每个图像添加到视图中的计算位置,然后让它进行分页?这似乎不符合 Cocoa 的精神......我是否缺少一些技术?
cocoa - NSView 中的 NSTableView 和 NSSearchField,它是 NSMenuItem 的出口,不起作用
我有一个NSView
,它被设置为一个的view:
出口NSMenuItem
。该视图包含一个NSTableView
(在一个内部NSScrollView
)和一个NSSearchField
。NSMenu
当用户单击特定的 时显示NSStatusItem
。当我从 Xcode 启动应用程序(构建和运行)时,控件表现良好,但每当我从 Finder 启动它时(就像用户那样),它们不起作用并且没有任何焦点。我的应用程序是一个LSUIElement
. 谁能帮我吗?谢谢。
objective-c - 自定义 NSView 的子视图正在调整自身大小以适应其父视图
我有一个包含子视图的自定义 NSView——为了解决这个问题,顶层视图只是充当容器并自动调整大小以适应窗口。它的子视图从窗口边缘绘制一个 10 像素插入的矩形,底部除外,它应该被窗口剪裁,直到它被调整大小以显示整个矩形。但是,它并没有按照我的意图运行,而是在其父视图的高度小于它的高度时缩小矩形的高度。我如何避免这种情况并让它保持在适当的高度,而不是在超级视图较小时被剪裁?
父视图的实现代码为:
子视图只是:
cocoa - NSTextView 的 adjustScroll 方法
我试图在我的 Cocoa 文本编辑器中实现打字机滚动,保持插入点在其滚动视图中垂直居中。
为此,我进行了子类化NSClipView
以提供一种scrollToPointWithoutConstraint
方法,该方法无需调用即可将文档滚动到指定点constrainScrollPoint
。这是必要的,因为对于短文档,插入点不能居中,除非我们滚动超出文档的边界。
到目前为止,这似乎相当简单,并且可以满足我的要求。当我尝试使用滚动条滚动时,问题就出现了。如果我滚动到文档的末尾,这样滚动视图的一部分包含文档边界之外的区域,尝试向上滚动一个小增量会导致滚动视图跳转,立即夹紧到文档的实际边界。
我收集到我可能需要子类NSTextView
化并覆盖该adjustScroll
方法;这是我的实际问题开始的地方。proposedVisibleRect
传递给的已经adjustScroll
调整了其尺寸,以便它们位于文档的实际范围内。有没有办法可以改变proposedVisibleRect
before的值adjustScroll
?或者,我是否完全错了?在这一点上,任何建议将不胜感激。
objective-c - NSCollectionView 中的选择突出显示
我有NSCollectionView
一个次要但关键的例外情况。获取并突出显示集合中的选定项目。
在 Snow Leopard 之前,我已经完成了所有这些工作,但似乎发生了一些变化,我无法完全确定它,所以我NSCollectionView
回到了基本测试,并按照 Apple 的文档在此处创建 NSCollectionView:
按照快速入门指南,集合视图可以正常工作。但是,本指南不讨论除"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected"
.
以此为例,我进入下一步,NSCollectionView
使用控制器键将 Array Controller 绑定到selectionIndexes
,认为这将绑定我在NSCollectionView
和 数组控制器之间所做的任何选择,从而触发 KVO 通知。我还将NSCollectionView
IB 设置为可选。
似乎没有选择委托,NSCollectionView
并且与大多数 Cocoa UI 视图不同,似乎没有默认选择的突出显示。
所以我的问题真的归结为一个相关的问题,但是两个不同的问题。
- 如何捕获对项目的选择?
- 如何显示项目的亮点?
NSCollectionView
的编程指南似乎少之又少,大多数通过 Google 进行的搜索似乎都提取了 Snow Leopard 之前的实现,或者在单独的 XIB 文件中使用视图。
对于后者(视图的单独 XIB 文件),我不明白为什么这应该是先决条件,否则我会怀疑 Apple 不会将视图包含在与集合视图项相同的包中。
我知道这将是一个“只见树木不见森林”的问题——所以我已经准备好迎接“doh!”。片刻。
像往常一样,非常感谢任何和所有帮助。
更新 1
好的,所以我想找到选定的项目,但还没有想出突出显示。对于对确定所选项目感兴趣的人(假设您遵循 Apple 指南):
在控制器(在我的测试用例 App Delegate 中)中,我添加了以下内容:
在 awakeFromNib
新方法
不要忘记为非 GC 解除分配
仍在寻找高光分辨率...
更新 2
接受了 Macatomy 的建议,但仍有问题。发布相关的类方法,看看我哪里出错了。
我的视图.h
我的视图.m
我的CollectionViewItem.h
"MyCollectionViewItem.m*
cocoa - 如何模仿Automator的工作流视图?
我开始开发我的第一个成熟的 Cocoa 应用程序,其中包含一个我希望其行为(和外观)类似于 Automator 的AMWorkflowView
.
我想实现的基本功能:
- 子视图的定位
- 以展开/折叠状态显示子视图
- 多项选择
- 拖放
为了习惯 Cocoa,我从一个自定义开始,NSView
它主要用作自定义子视图的容器,并处理它们的定位和多选。子视图也是 的子类NSView
,它们本身包含可变数量的视图,如按钮、标签和弹出菜单,因此可以有不同的高度。这工作得很好,但在继续之前,我想确保根据 MVC 模式让所有东西都整齐有序。
我怀疑 Cocoa 中已经有一个类可以促进视图容器的实现,比如可能NSCollectionView
.
不过,似乎没有(简单的)方法可以在 中显示不同大小的视图NSCollectionView
。我应该继续实现我的自定义NSView
(可能使用NSArrayController
选择和排序支持),还是有更好的方法?
任何帮助深表感谢
cocoa - 在 NSView 中重置图像
我认为这是一个非常简单的问题,但我是编程新手,所以我可能会以错误的方式处理它。
我对 Objective-C 编写终端应用程序有基本的了解,并且正在自学如何使用 Cocoa GUI。
我了解如何使用一个简单的按钮IBOutlet
并将IBAction
其连接到一种将随机数重复发送到文本字段的方法。
我了解如何添加NSView
文件,将其连接到界面构建器中的自定义视图,并在应用程序启动时通过视图中的随机点绘制路径。
(我一直将此代码放在- (void)drawRect:(NSRect)dirtyRect
创建文件时声明的方法中)。
我似乎无法弄清楚如何将按钮连接到将“刷新”视图的操作 - 在这种情况下,用另一组与路径连接的随机点重新填充它。查看文档,我想我应该以某种方式使用
但到目前为止我所尝试的一切都没有奏效。请告诉我,我在这里缺少什么?
objective-c - 在自定义视图上显示 NSString
我有一个具有NSTextField
,NSButton
和NSView
. 当我在 中输入NSTextfield
内容并按下按钮时,我希望将文本绘制在NSView
. 到目前为止,除了视图之外,我的所有东西都已连接并正常工作。
如何连接文本和视图,以便每次按下按钮时,都会将文本绘制到视图中?
cocoa - Cocoa UI 元素未更新
我有一些 Cocoa UI 元素,其出口连接到在 NSView 对象中实例化的对象,而该对象又由 NSViewController 放在那里。这些元素,一个明确的进度条和一个文本标签,没有更新:进度条是死的和空的,尽管它的值不断变化,文本标签不会通过 [textLabel setHidden:NO] 取消隐藏,文本标签不会改变它的字符串。
我知道的:
- 绑定值和在代码中设置它们之间没有区别。两种方式都没有改变。
- 我检查了插座连接。他们都在那里。
- 我试过 [X displayIfNeeded],其中 X 是 UI 对象本身、包含 NSView 和主窗口。没有不同。
- [progressBar setUsesThreadedAnimation:YES] 没有区别。有趣的是,如果我在程序中查看progressBar,_threadedAnimation 仍然是NO。
- 拥有所有这些出口并执行导入操作的对象位于 NSViewController 对象拥有的 NSOperationQueue 中。
谢谢!
编辑:按照建议,我调用了 [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithInt:myObject] waitUntilDone:NO]。(我也试过 waitUntilDone:YES。)它仍然没有更新。调试器清楚地显示 updateProgress: 发生在主线程中,所以我不知道缺少什么。