
Cocoa (OS X)
基于Cocoa的混编式OS X应用程序开发
kicinio
这个作者很懒,什么都没留下…
展开
-
Cocoa: keyEquivalent(NSXXFunctionKey)&& modifierFlags
Cocoa开发:快捷键常见的keyEquivalent值:NSUpArrowFunctionKey = 0xF700, NSDownArrowFunctionKey = 0xF701, NSLeftArrowFunctionKey = 0xF702, NSRightArrowFunctionKey = 0xF703, NSF1FunctionKey = 0xF704, NSF2FunctionKey = 0xF705, NSF3FunctionKey = 0xF706, NSF4Funct原创 2022-01-11 20:41:20 · 1806 阅读 · 0 评论 -
OS X开发.第一章,1.18, NSPopover
1.18 NSPopoverNSPopover是Cocoa中提供的可用于浮动弹出的组件,类似于iPad中的UIPopover。被弹出的视图(NSViewController)拥有自己的生命周期与代理方法。1.18.1 基本声明class CompentViewController: NSViewController { var mView: NSView! var button: NSButton! override func loadView() {原创 2021-10-24 10:54:40 · 516 阅读 · 0 评论 -
OS X开发.第一章,1.17, NSTabView
1.17 NSTabViewNSTabView是Cocoa中提供的用以管理一组子容器的容器,其作用类似于Swing中的JTabbedPane,在有限的空间内可展示或管理更多的子容器。1.17.1 基本声明class WidgetController: NSViewController, NSTabViewDelegate { var mView: NSView! var tabView: NSTabView! override func loadView() {原创 2021-10-23 22:03:54 · 986 阅读 · 0 评论 -
OS X开发.第一章,1.16, NSBox
1.16 NSBoxNSBox是Cocoa中用来进行信息分组(控件分组)的视图,本身带有标题(title),也可设置自身展示样式。子控件与父视图之间的间隔使用contentViewMargins属性即可,子控件的放入使用NSBox的contentView属性进行addSubview即可。1.16.1 基本声明class WidgetController: NSViewController { var mView: NSView! var box: NSBox! var原创 2021-10-22 22:17:35 · 697 阅读 · 0 评论 -
OS X开发.第一章,1.15, NSProgressIndicator
1.15 NSProgressIndicatorNSProgressIndicator是Cocoa中提供的用以显示处理进度的控件,可显示当前任务百分比。1.15.1 基本声明class WidgetController: NSViewController { var mView: NSView! var progress: NSProgressIndicator! override func loadView() { self.view = NSV原创 2021-10-21 21:21:12 · 203 阅读 · 0 评论 -
OS X开发.第一章,1.14, NSStepper
1.14 NSStepperNSStepper是Cocoa中提供的步进器控件。每次控件的点击事件对应着值增加或减少。NSStepper还可与NSTextField等控件使用协议来完成实时事件回调。1.14.1 基本声明class WidgetController: NSViewController{ var mView: NSView! var stepper: NSStepper! override func loadView() { sel原创 2021-10-20 16:43:15 · 210 阅读 · 0 评论 -
OS X开发.第一章,1.13 NSDatePicker
1.13 NSDatePickerNSDatePicker是Cocoa中提供的日历选择控件,其提供了较为实用的外观样式与回调事件,也可以对日期进行业务级别的校验。1.13.1 基本声明import Cocoaclass WidgetController: NSViewController, NSComboBoxDelegate, NSComboBoxDataSource, NSDatePickerCellDelegate { var mView: NSView! var原创 2021-10-18 21:55:02 · 220 阅读 · 0 评论 -
OS X开发.第一章,1.12 NSSlider
1.12 NSSliderNSSlider是Cocoa中提供的一个滑动组件,可用于实时滑动以改变数值。1.12.1 基本声明 var slider: NSSlider! private func initView(){ slider = NSSlider(target: self, action: #selector(sliderListener)) slider.frame = CGRect(x: (self.view.frame.width / 2)原创 2021-10-16 16:00:20 · 433 阅读 · 0 评论 -
OS X开发.第一章,1.11,NSPopupButton
1.11 NSPopupButtonNSPopupButton是Cocoa中弹出式选择控件1.11.1 基本声明 var popupButton: NSPopUpButton! popupButton = NSPopUpButton(frame: NSRect(x: (self.view.frame.width / 2) - 50, y: 150, width: 100, height: 29)) popupButton.addItems原创 2021-10-14 21:13:27 · 279 阅读 · 0 评论 -
OS X开发.第一章,1.10, NSComboBox
1.10 NSComboBoxNSComboBox是Cocoa中用以提供下拉选择的控件。可提前设置好下拉选择框条目,也可动态进行增删。1.10.1 基本声明import Cocoaclass WidgetController: NSViewController, NSComboBoxDelegate { var mView: NSView! var comboBox: NSComboBox! override func loadView() {原创 2021-10-12 20:57:07 · 627 阅读 · 0 评论 -
OS X开发.第一章,1.9, NSSegmentControl
1.9 NSSegmentControlNSSegmentControl是OS X中提供的一个用以在多个按钮选项栏中单选的控件,与Radio不同的是,NSSegmentControl是横行展示的,可用来切换NSViewController或NSView等视图类的。1.9.1 基本声明 var mView: NSView! var segmentControl: NSSegmentedControl! override func loadView() { sel原创 2021-10-11 20:59:37 · 298 阅读 · 0 评论 -
OS X开发.第一章,1.9,Radio
1.8 RadioRadio是Cocoa中利用NSButton的一个有关radioButtonWithTitle的构造方法进行初始化的单选按钮。用户在界面中提供的单选框内仅可勾选一个选项。1.8.1 基本声明 var radioMale: NSButton! var radioFemale: NSButton! radioMale = NSButton(radioButtonWithTitle: "Male", target: self, action: #select原创 2021-10-10 13:23:05 · 140 阅读 · 0 评论 -
OS X开发.第一章,1.8,CheckButton
1.8 CheckButtonCheckButton即NSButton对外提供的一个有关checkboxWithTitle的构造方法来实现的,可作为勾选按钮(不限按钮种类与数量)而存在。1.8.1 基本声明var checkButtonMovie: NSButton!checkButtonMovie = NSButton(checkboxWithTitle: "Movie", target: self, action: #selector(movieListener))checkButtonMo原创 2021-10-09 23:00:28 · 125 阅读 · 0 评论 -
OS X开发.第四章,4.1,Sandbox及文件操作
4.1 Sandbox及文件操作OS X自10.6伊始就引入了Sandbox机制,此后若想上架App Store就必须开启此操作。Sandbox是系统为应用分配的特定空间,应用只能在此进行文件操作,若想在其它地方读写则必须得到授权,从而保证了系统的安全性。4.1.1 Sandbox配置选择Target,项目,点击Capability加号选项,跳出如下界面在该界面选择App Sandbox选项,如下图是Sandbox配置选项界面File Access为权限类型,在测试环境下全部选择为“Read/原创 2021-10-08 21:24:49 · 351 阅读 · 0 评论 -
OS X开发.第三章.3.4,View内右键点击菜单
3.4 View内右键点击菜单通常在ViewController鼠标右键单击后会有一个NSMenu对象出现,设置window的menu属性即可。3.4.1 基本声明 private func setContextMenu(){ let menu = NSMenu() let menuItemOne = NSMenuItem(title: "ContextMenu1", action: #selector(test1Listener), keyEquivalent:原创 2021-10-06 17:22:56 · 197 阅读 · 0 评论 -
OS X开发.第三章,3.3,NSStatusBar
3.3 NSStatusBarNSStatusBar位于顶部状态栏的右侧,启用设置后会常驻任务栏显示相关信息或进行某操作。3.3.1 基本声明打开AppDelegate.swift文件,修改如下所示代码: var item: NSStatusItem! func applicationDidFinishLaunching(_ aNotification: Notification) { // Insert code here to initialize your ap原创 2021-10-06 17:17:30 · 497 阅读 · 0 评论 -
OS X开发.第三章,3.2, Dock菜单
3.2 Dock菜单Dock菜单是OS X应用启动后在Dock栏上点击图标后展示的自定义菜单选项。3.2.1 基本声明打开AppDelagate.swift文件,在applicationDockMenu() (该方法未实现,需手动实现)内编写如下代码: let menu = NSMenu() let menuItemOne = NSMenuItem(title: "Dock1", action: #selector(statusListener), keyEquival原创 2021-10-06 17:05:01 · 295 阅读 · 0 评论 -
OS X开发.第三章,3.1,NSMenu
3.1 NSMenuNSMenu是Cocoa中一种无限嵌套(层级式)的面板,类似于JMenu。NSMenu管理者NSMenuItem,而每个NSMenuItem又可以设置NSMenu对象,这样就构成无线嵌套。下面就看一下NSMenu在顶部左侧菜单栏的使用。3.1.1 基本声明由于NSMenu主要用于全局的菜单显示,因此要在AppDelagate.swift文件里面进行操作。打开该文件后,在applicationDidFinishLaunching() 内编写如下代码: let runM原创 2021-10-06 16:57:05 · 638 阅读 · 0 评论 -
OS X开发.第二章,2.1,NSAlert
2.1 NSAlertNSAlert是Cocoa中用来进行警告或提醒类的窗口,其类似于JOptionalPane或MessageBox。常用的有两种类型,一种是仅以信息提示,另一种是信息提示辅以事件响应,请看下文介绍。2.1.11.仅信息提示类 private func showAlert(){ let alert = NSAlert() alert.addButton(withTitle: "OK") alert.messageText = "原创 2021-10-06 14:12:15 · 369 阅读 · 0 评论 -
OS X开发.第一章,1.7,NSCollectionView
1.7 NSCollectionViewNSCollectionView是Cocoa中用来展示多行多列的自定义Item的控件,其作用和写法类似于UICollectionView,均有数据源和代理协议构成,然而具体实现细节上却有很大出入,下面请看纯代码编写NSCollectionView的介绍,为了方便示例,本节内容并没有严格遵守MVC架构来进行。1.7.1 基本声明基本声明包括Item的创建、NSCollectionView的创建、NSCollectionFlowLayout的创建。这三者的创建细节与原创 2021-10-06 11:39:38 · 539 阅读 · 0 评论 -
OS X开发.第一章,1.6,NSImageView
1.6 NSImageViewNSImageView是Cocoa中用来显示图片的控件。1.6.1 基本声明 var imageView: NSImageView! override func loadView() { self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300)) } private func initView(){ mView原创 2021-10-05 22:08:49 · 325 阅读 · 0 评论 -
HTTP load failed, 0/0 bytes (error code: -1003 [10:-72000])
问题描述:OS X应用无法访问网络请求,超时后报错:HTTP load failed, 0/0 bytes (error code: -1003 [10:-72000])原因:沙盒配置错误解决方法:先确认项目是否开启HTTPS访问策略,接着找到默认生成的“.entitlements”文件,设置App SandBox值为false即可...原创 2021-10-05 20:41:09 · 2525 阅读 · 0 评论 -
OS X开发.第一章,1.5,NSButton
1.5 NSButtonNSButton是Cocoa中用来作为点击响应的控件。常见的可分为文本类型按钮与图片类型的按钮1.5.1 基本声明 var plainButton: NSButton! override func loadView() { self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300)) } private func initView()原创 2021-10-05 11:57:43 · 515 阅读 · 0 评论 -
OS X开发.第一章,1.3,NSSearchField
1.3 NSSearchFieldNSSearchField是Cocoa中专用于搜索输入框的控件,其用法类似于NSTextField,请看下文介绍。1.3.1 基本声明 private func initView(){ mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)) searchField原创 2021-10-04 21:35:57 · 480 阅读 · 0 评论 -
OS X开发.第一章,1.2,NSTextView
1.2 NSTextViewNSTextView是OS X中一种可以展现大容量文本的控件,但其文本内容超出控件本身时,会出现滚动条以供滑动。NSTextView的创建与使用与NSTextField类似,下面是其详细介绍。1.2.1 基本声明 var textView: NSTextView! private func initView(){ mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.fra原创 2021-10-04 20:38:34 · 1106 阅读 · 0 评论 -
OS X开发.第一章,1.1,NSTextField
1.1 NSTextFieldNSTextField是类似于JTextField等诸如此类的“可接受文本”的控件,用来应用与用户的信息交互。其创建过程类似于UITextField,使用NSTextField也需要代理的注册。1.1.1 基本声明(为方便布局,采取SnapKit第三方库,其用法与iOS如出一辙) var textField: NSTextField! private func initView(){ textField = NSTextField原创 2021-10-04 16:58:16 · 615 阅读 · 0 评论