Xcode 接口构建器 | 原创,AI翻译
这是一个用于定义 macOS 应用程序的用户界面的 XML 文件,该应用程序使用 Cocoa 编写,并且格式为 XIB(Xcode Interface Builder)。具体来说,这个 XIB 文件描述了一个名为“Reveal-In-GitHub”的应用程序的设置窗口。让我逐步为你解释:
概述
这个文件定义了一个标题为“Reveal-In-GitHub Settings”的窗口,其中包含各种 UI 元素,如按钮、文本字段和自定义视图。它是使用 Interface Builder(Xcode 的一部分)设计的,并使用 Auto Layout 动态定位元素。该窗口由一个名为 RIGSettingWindowController
的自定义类控制。
关键部分
- 头信息
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9059" systemVersion="14F27" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
- 这指定了这是一个用于 macOS Cocoa 应用程序的 XIB 文件,使用 XIB 格式的版本 3.0。
toolsVersion="9059"
和systemVersion="14F27"
表示创建时使用的 Xcode 和 macOS 版本。useAutolayout="YES"
表示布局会根据窗口大小或屏幕分辨率动态调整。
- 依赖项
<dependencies> <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9059"/> </dependencies>
- 这引用了 Interface Builder 的 Cocoa 插件,该插件提供了 macOS UI 元素的框架。
-
对象 这个部分定义了界面中的所有对象,包括窗口、视图、按钮及其连接。
- 文件所有者(
RIGSettingWindowController
)<customObject id="-2" userLabel="File's Owner" customClass="RIGSettingWindowController"> <connections> <outlet property="configsView" destination="IKd-Ev-B9V" id="z2z-MF-G88"/> <outlet property="mainView" destination="se5-gp-TjO" id="pGn-EC-mzi"/> <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/> </connections> </customObject>
- 文件所有者是管理这个窗口的控制器类(
RIGSettingWindowController
)。 - 它有到主视图、配置视图和窗口本身的输出(连接),将 UI 元素与代码链接起来。
- 文件所有者是管理这个窗口的控制器类(
- 窗口
<window title="Reveal-In-GitHub Settings" ... id="F0z-JX-Cv5" userLabel="Settings"> <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> <rect key="contentRect" x="527" y="176" width="651" height="497"/> <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
- 定义了一个带有标题、关闭/最小化/调整大小按钮的窗口,大小为 651x497 像素。
contentRect
指定了其在屏幕上的位置和大小,而screenRect
描述了完整的屏幕分辨率(1440x877)。
- 内容视图
<view key="contentView" id="se5-gp-TjO"> <rect key="frame" x="0.0" y="0.0" width="651" height="497"/> <subviews>
- 主内容视图填充窗口并包含所有 UI 元素(子视图)。
- 文件所有者(
-
UI 元素(子视图) 这里是内容视图中的一些关键元素:
- 文本字段
<textField ... id="G1C-Td-n9Y"> <rect key="frame" x="18" y="425" width="187" height="17"/> <textFieldCell ... title="Custom Menu Items" ...>
- 位置为 (18, 425) 的标签,显示“Custom Menu Items”。
- 其他文本字段包括“Menu Title”、“⌃⇧⌘ +”(Control+Shift+Command 快捷键)和“URL Pattern”。
- 按钮
<button ... id="EuN-9g-Vcg"> <rect key="frame" x="14" y="13" width="137" height="32"/> <buttonCell ... title="Save" ...> <connections> <action selector="saveButtonClcked:" target="-2" id="efd-QE-4aQ"/> </connections>
- 位置为 (14, 13) 的“Save”按钮,触发控制器中的
saveButtonClcked:
方法。 - 其他按钮包括“Clear Default Repos”和“Reset Default Menus”,每个按钮都与特定的操作相关联。
- 位置为 (14, 13) 的“Save”按钮,触发控制器中的
- 自定义视图
<customView ... id="IKd-Ev-B9V" userLabel="Config View"> <rect key="frame" x="20" y="54" width="611" height="330"/>
- 一个占据窗口大部分空间的自定义视图占位符(可能会通过编程填充)。
- 文本字段
- 连接
- 按钮连接到
RIGSettingWindowController
中的方法(例如saveButtonClcked:
、clearButtonClicked:
),使得用户交互可以触发代码。
- 按钮连接到
这做了什么?
这个 XIB 文件为名为“Reveal-In-GitHub”的 macOS 应用程序创建了一个设置窗口,可能是一个将 GitHub 功能集成到另一个应用程序中的工具。该窗口允许用户:
- 自定义菜单项(带有标题和 URL 模式)。
- 保存他们的设置。
- 清除默认存储库或将菜单重置为默认值。
布局是固定的(fixedFrame="YES"
),而不是完全利用 Auto Layout 约束,这意味着位置是以像素为单位硬编码的。这可能使其在不同屏幕尺寸下不太灵活,但设计起来更简单。
为什么使用 XIB?
XIB 文件允许开发人员在 Xcode 的 Interface Builder 中以视觉方式设计界面,并通过输出和操作将其连接到代码。这个文件将 UI(按钮、文本等)与 RIGSettingWindowController
类桥接起来,该类处理逻辑。