Prechádzať zdrojové kódy

Show Settings label in sidebar

Render Settings as a standard home sidebar row with icon + text, keeping its placement stable while ensuring the label is fully visible.

Made-with: Cursor
huzaifahayat12 3 mesiacov pred
rodič
commit
7b25150cae
1 zmenil súbory, kde vykonal 40 pridanie a 21 odobranie
  1. 40 21
      zoom_app/ViewController.swift

+ 40 - 21
zoom_app/ViewController.swift

@@ -1248,34 +1248,53 @@ class ViewController: NSViewController {
         if style == .home {
             let spacer = NSView()
             spacer.translatesAutoresizingMaskIntoConstraints = false
-            // Keep sidebar icons at the same vertical positions even when the window grows.
-            // A flexible spacer will expand with height and push icons away from their default placement.
+            // Keep Settings in a stable position (no vertical shifting on resize).
             spacer.heightAnchor.constraint(equalToConstant: 12).isActive = true
             spacer.setContentHuggingPriority(.required, for: .vertical)
             spacer.setContentCompressionResistancePriority(.required, for: .vertical)
             stack.addArrangedSubview(spacer)
             
-            let settingsBadge = NSView()
-            settingsBadge.wantsLayer = true
-            settingsBadge.layer?.backgroundColor = NSColor.clear.cgColor
-            settingsBadge.layer?.cornerRadius = 12
-            settingsBadge.translatesAutoresizingMaskIntoConstraints = false
-            settingsBadge.widthAnchor.constraint(equalToConstant: 32).isActive = true
-            settingsBadge.heightAnchor.constraint(equalToConstant: 32).isActive = true
-            let gearIcon = NSImageView()
-            gearIcon.translatesAutoresizingMaskIntoConstraints = false
-            gearIcon.image = NSImage(systemSymbolName: "gearshape", accessibilityDescription: "Settings")
-            gearIcon.contentTintColor = primaryText
-            gearIcon.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 20, weight: .regular)
-            gearIcon.imageScaling = .scaleProportionallyUpOrDown
-            settingsBadge.addSubview(gearIcon)
+            let settingsRow = NSView()
+            settingsRow.translatesAutoresizingMaskIntoConstraints = false
+            settingsRow.wantsLayer = true
+            settingsRow.layer?.backgroundColor = NSColor.clear.cgColor
+            settingsRow.layer?.cornerRadius = 12
+            settingsRow.widthAnchor.constraint(equalToConstant: 68).isActive = true
+            settingsRow.heightAnchor.constraint(equalToConstant: 66).isActive = true
+
+            let iconContainer = NSView()
+            iconContainer.translatesAutoresizingMaskIntoConstraints = false
+            settingsRow.addSubview(iconContainer)
+
+            let iconView = NSImageView()
+            iconView.translatesAutoresizingMaskIntoConstraints = false
+            iconView.contentTintColor = primaryText
+            iconView.imageScaling = .scaleProportionallyUpOrDown
+            iconView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 20, weight: .regular)
+            iconView.image = NSImage(systemSymbolName: "gearshape", accessibilityDescription: "Settings")
+            iconContainer.addSubview(iconView)
+
+            let label = makeLabel("Settings", size: 10, color: secondaryText, weight: .regular, centered: true)
+            label.translatesAutoresizingMaskIntoConstraints = false
+            settingsRow.addSubview(label)
+
             NSLayoutConstraint.activate([
-                gearIcon.centerXAnchor.constraint(equalTo: settingsBadge.centerXAnchor),
-                gearIcon.centerYAnchor.constraint(equalTo: settingsBadge.centerYAnchor),
-                gearIcon.widthAnchor.constraint(equalToConstant: 22),
-                gearIcon.heightAnchor.constraint(equalToConstant: 22)
+                iconContainer.topAnchor.constraint(equalTo: settingsRow.topAnchor, constant: 9),
+                iconContainer.centerXAnchor.constraint(equalTo: settingsRow.centerXAnchor),
+                iconContainer.widthAnchor.constraint(equalToConstant: 26),
+                iconContainer.heightAnchor.constraint(equalToConstant: 26),
+
+                iconView.centerXAnchor.constraint(equalTo: iconContainer.centerXAnchor),
+                iconView.centerYAnchor.constraint(equalTo: iconContainer.centerYAnchor),
+                iconView.widthAnchor.constraint(equalToConstant: 22),
+                iconView.heightAnchor.constraint(equalToConstant: 22),
+
+                label.topAnchor.constraint(equalTo: iconContainer.bottomAnchor, constant: 6),
+                label.centerXAnchor.constraint(equalTo: settingsRow.centerXAnchor),
+                label.bottomAnchor.constraint(equalTo: settingsRow.bottomAnchor, constant: -8)
             ])
-            stack.addArrangedSubview(settingsBadge)
+
+            stack.addArrangedSubview(settingsRow)
         }
 
         NSLayoutConstraint.activate([