我不能让我的NSSegmentedControl使用Base Localization更改其标题.
Xcode生成英语和法语的文件,我翻译每个段的标题,但它们保持与xib文件中的相同.
对于其他分段控件的工具提示也是如此.
由于其他一切工作都非常好,我认为这是这种特殊控制类型的错误.
有人可以证实这个问题吗?(Xcode 4.5.2,MacOS 10.8.2)
我试图增加NSSegmentedControl的高度,超过25px"常规"控件大小.我将NSSegmentedCell子类化,我明白我有两种方法可以使用.
- (void)drawSegment:(NSInteger)segment
inFrame:(NSRect)frame
withView:(NSView *)controlView
- (void)drawWithFrame:(NSRect)frame
inView:(NSView *)view
Run Code Online (Sandbox Code Playgroud)
如果我在IB中放置一个分段控件,那么在我的NSSegmentedCell子类中覆盖上面的方法.除外,传入的帧和视图基于IB中分段控件的高度.所以,我不知道从哪里开始.
我是否必须继承NSSegmentedControl并在我所需的高度绘制我自己的控件?然后使用NSSegmentedCell子类来处理段?
您知道我如何获得该控件子类 NSSegmentedControl/NSSegmentedControlCell 吗?
我尝试重写 NSSegmentedControlCell 中的一些方法,但我还没有接近获得我想要的。
override func drawSegment(segment: Int, inFrame frame: NSRect, withView controlView: NSView) {
let bez = NSBezierPath(roundedRect: frame, xRadius: 3, yRadius: 3)
NSColor.lightGrayColor().set()
bez.stroke()
if self.selectedSegment != segment {
bez.fill()
}
//super.drawSegment(segment, inFrame: frame, withView: controlView)
}
override func drawInteriorWithFrame(cellFrame: NSRect, inView controlView: NSView) {
//
}
Run Code Online (Sandbox Code Playgroud)
drawInteriorWithFrame 应该让我可以按照我想要的方式绘制背景(只是clearColor,带边框),但它仍然具有默认的 lightGrayColor。
谢谢。
在我的COCOA Mac应用程序中,有一个NSSegmentedControl按钮用于队列ON/OFF功能.现在我需要为它提供键盘快捷键.例如,对于Queue ON,如果已经是Off,反之亦然.
有人做过这种功能吗?
谢谢和问候,巴伦
我正在尝试重新创建Xcode中使用的分段控件,其中图像是用蓝色色调绘制的.
例如在Interface Builder中:

到目前为止,我有一个自定义NSSegmentedCell覆盖- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)controlView,但我坚持如何绘制带有灰色色调的段图像(1)和(2)如果选择了蓝色色调.
此外,它看起来像是用边框或渐变效果绘制的.当我自己绘制段图像时,它只是黑色(因为我使用模板图像).
如何从上方重新创建片段?
是否有记录的方式NSSegmentedControl来使用trackingMode NSSegmentSwitchTrackingSelectOne(即在控件中专门选择一个段)并使用蓝色调突出显示模式渲染它- 我们在使用时自动获得的模式NSSegmentSwitchTrackingSelectAny?
我正在寻找的是一种类似于Xcode工具栏或Navigator子工具栏/切换器中的样式:
到目前为止,尝试使用不同的样式或在标题周围进行探测都没有发现任何东西 -
分段控件使用深灰色突出显示(类似于在Finder窗口中观察到的那种).
任何有关如何激活蓝色突出显示模式的提示都非常受欢迎.
我有一个非常动态的 UI,它NSSegmentedControl在其文档窗口的工具栏中使用了。
该NSSegmentedControl动态分配得到它的元素。
元素的数量可以在 1 到 15 之间变化很大。
目前,工具栏不会针对 中的元素数量进行调整NSSegmentedControl,即在通过setSegmentCount:所有超出原始宽度的段NSSegmentedControl(在创建窗口时)设置段数之后:

告诉NSToolbar重新计算其所有元素的宽度的最佳方法是什么,即它的宽度NSSegmentedControl和所有元素的位置?
请原谅这个超级菜鸟的问题,但在过去的一个小时里我一直在谷歌上搜索这个问题,我很沮丧,因为我似乎找不到这样一个非常基本的问题的答案:
我如何处理 Cocoa 中的控制更改?
我来自 iOS,很明显 Cocoa 并不像 UIKit 那样使用出口或委托来处理事件,我觉得我在这里错过了一些非常重要的信息。我已经发现它使用了第一响应者链,但除此之外我无法弄清楚如何实际做到这一点,或者如何找到这些事件的定义或记录位置。
所以我有一个NSSegmentedControl内部 a NSToolBar,我只想知道用户何时更改所选段。我已经仔细阅读了类文档,但没有看到任何提及要处理的任何类型的事件或操作。我确实注意到,如果我将控件的action出口拖到我的第一响应者代理上,我会列出一千万种不同的操作,其中没有一个看起来是相关的。
我到底该如何在 Cocoa 中做到这一点?
cocoa ×7
macos ×2
nstoolbar ×2
xcode ×2
localization ×1
nscell ×1
nscontrol ×1
objective-c ×1
swift ×1