Xcode 接口构建器 | 原创,AI翻译

Home PDF

这是一个用于定义 macOS 应用程序的用户界面的 XML 文件,该应用程序使用 Cocoa 编写,并且格式为 XIB(Xcode Interface Builder)。具体来说,这个 XIB 文件描述了一个名为“Reveal-In-GitHub”的应用程序的设置窗口。让我逐步为你解释:

概述

这个文件定义了一个标题为“Reveal-In-GitHub Settings”的窗口,其中包含各种 UI 元素,如按钮、文本字段和自定义视图。它是使用 Interface Builder(Xcode 的一部分)设计的,并使用 Auto Layout 动态定位元素。该窗口由一个名为 RIGSettingWindowController 的自定义类控制。

关键部分

  1. 头信息
    <?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" 表示布局会根据窗口大小或屏幕分辨率动态调整。
  2. 依赖项
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9059"/>
    </dependencies>
    
    • 这引用了 Interface Builder 的 Cocoa 插件,该插件提供了 macOS UI 元素的框架。
  3. 对象 这个部分定义了界面中的所有对象,包括窗口、视图、按钮及其连接。

    • 文件所有者(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 元素(子视图)。
  4. 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”,每个按钮都与特定的操作相关联。
    • 自定义视图
      <customView ... id="IKd-Ev-B9V" userLabel="Config View">
          <rect key="frame" x="20" y="54" width="611" height="330"/>
      
      • 一个占据窗口大部分空间的自定义视图占位符(可能会通过编程填充)。
  5. 连接
    • 按钮连接到 RIGSettingWindowController 中的方法(例如 saveButtonClcked:clearButtonClicked:),使得用户交互可以触发代码。

这做了什么?

这个 XIB 文件为名为“Reveal-In-GitHub”的 macOS 应用程序创建了一个设置窗口,可能是一个将 GitHub 功能集成到另一个应用程序中的工具。该窗口允许用户:

布局是固定的(fixedFrame="YES"),而不是完全利用 Auto Layout 约束,这意味着位置是以像素为单位硬编码的。这可能使其在不同屏幕尺寸下不太灵活,但设计起来更简单。

为什么使用 XIB?

XIB 文件允许开发人员在 Xcode 的 Interface Builder 中以视觉方式设计界面,并通过输出和操作将其连接到代码。这个文件将 UI(按钮、文本等)与 RIGSettingWindowController 类桥接起来,该类处理逻辑。


Back 2025.04.02 Donate