Swift tips: NSAttributedString 的 baselineOffset

本文介绍如何使用 baselineOffset 使 NSAttributedString 中的图片和文字在垂直方向上对齐。 NSAttributedStringKey.baselineOffset 为了在一个多行文字的 UILabel 首部插入一个 icon,使用了 NSAttributedString 实现: let attributes = [ NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17.0), NSAttributedStringKey.foregroundColor: UIColor. »

Swift Tips: Variable used within its own initial value

在某些情况下,我们希望能够在一个函数传入的函数中调用这个函数的返回值。举个例子,UIApplication 有一个成员函数: func beginBackgroundTask( expirationHandler handler: () -> Void? = nil) -> UIBackgroundTaskIdentifier beginBackgroundTask(expirationHandler:) 返回一个数字(UIBackgroundTaskIdentifier 实际上是 Int),在 expirationHandler: 中我们需要使用这个数字 —— 在这个函数中, »

Tip: NSOutlineView 之 stronglyReferencesItems

NSOutlineView 在 10.12 后引入了一个新的属性 stronglyReferencesItems,默认为 true,作用就是强引用了 data source 返回的对象。如果你正在使用 Realm 做数据存储,在一个删除需求里,realm delete 一个 object 后接收到 Notification,这时调用 outlineView.removeItem 一定会跪, »

61 61

Cocoa:给 NSTableView 加上右键菜单

可以说几乎每个应用都需要用到 TableView,iOS 上如此 macOS 也不例外。因为桌面应用支持鼠标操作,所以当需要操作某一行的内容时,最常见的就是右键弹出菜单,选择需要的操作。开发一个 macOS 应用,这是最基本也是一定会遇到的需求。下图是 Things 3 任务列表的右键菜单。 但是在我的印象中,加个右键菜单并不容易,这个印象来自 12 年在公司做  doit.im  的 »

61 61

Cocoa 键盘事件处理:Keyboard Actions

本文给出了在 Key Actions 阶段处理按键事件的两个具体例子。 前言 在 Cocoa 中,NSResponder 中的方法与键盘事件有默认绑定(参考 Default Mac OS X System Key Bindings)。可以通过重载 NSResponder 的方法或者在 keyDown: 中直接调用自定义方法来实现自定义操作。 具体实现 下文以 CurrencyX »