0%

macOS开发笔记(2)

NSToolbar

常用NSToolbar开发偏好设置界面,在xib中可以直接拖NSToolbarWindow中,可以自定义图片文字。

勾选Behavior中的SelectableNSToolbarItem是可选中样式的。

设置某个NSToolbarItem默认选中,需要先设置默认选中的NSToolbarItemIdentifier,使用下面代码完成默认选中:

1
toolbar.selectedItemIdentifier = NSToolbarItem.Identifier(rawValue: "id")

Window按钮

控制window左上角关闭、最小化、最大化按钮的是否可用,以及显示隐藏。

可以在xib中勾选Controls中的CloseMinimizeResize,控制按钮是否可用。或者使用代码:

1
self.window?.standardWindowButton(.closeButton)?.isEnabled = false

使用代码可以隐藏按钮:

1
2
self.window?.standardWindowButton(.miniaturizeButton)?.isHidden = true
self.window?.standardWindowButton(.zoomButton)?.isHidden = true

NSButton

设置按钮为蓝色背景,需要设置按钮的Key Equivalent为回车键

Label

macOS中Label继承自NSTextField,有两种:LabelWrapping Label

Wrapping Label为多行Label,无需设置Line Break为Character Wrap

使用Label 设置Line Break也无法折行显示。

Label仅作为文字显示时,鼠标移上不变光标显示,需要设置Action为Sent On End Editing

NSTableCellView

移除默认的Cell点击变蓝,设置NSTableView的selectionHighlightStyle :

1
self.tableView.selectionHighlightStyle = .none

NSTableCellView根据存放的Label内容自适应高度,OSX 10.13以后,在xib中设置正确的约束,设置Row自适应高度即可:

1
self.tableView.usesAutomaticRowHeights = true

无需指定默认高度rowHeight,亦无需实现row高度的代理方法func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat

基于视图的NSTableView,其行具有动态高度

NSTextField

限制输入框NSTextField的输入内容,仅允许输入数字,需要自定义Formatter

1
2
3
4
5
6
7
8
9
10
11
import Cocoa

class OnlyIntegerValueFormatter: NumberFormatter {
override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
if partialString.isEmpty {
return true
}
// 禁止输入非数字 && 首位不能为0 && 最多输入3位
return Int(partialString) != nil && Int(partialString)! > 0 && partialString.count < 4
}
}
打赏作者一杯咖啡