Преглед изворни кода

Reposition paywall sections lower for better balance.

Add top spacers around the hero and benefits rows and tune inter-section gaps so premium cards and supporting content sit lower with less visible empty space.

Made-with: Cursor
huzaifahayat12 пре 8 часа
родитељ
комит
0795c53df5
1 измењених фајлова са 13 додато и 8 уклоњено
  1. 13 8
      classroom_app/ViewController.swift

+ 13 - 8
classroom_app/ViewController.swift

@@ -2678,6 +2678,11 @@ private extension ViewController {
2678 2678
         contentStack.addArrangedSubview(topRow)
2679 2679
         topRow.widthAnchor.constraint(equalTo: contentStack.widthAnchor).isActive = true
2680 2680
 
2681
+        let heroTopSpacer = NSView()
2682
+        heroTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2683
+        heroTopSpacer.heightAnchor.constraint(equalToConstant: 18).isActive = true
2684
+        contentStack.addArrangedSubview(heroTopSpacer)
2685
+
2681 2686
         let hero = roundedContainer(cornerRadius: 16, color: palette.sectionCard)
2682 2687
         hero.translatesAutoresizingMaskIntoConstraints = false
2683 2688
         styleSurface(hero, borderColor: palette.inputBorder, borderWidth: 1, shadow: false)
@@ -2705,6 +2710,11 @@ private extension ViewController {
2705 2710
             heroSubtitle.bottomAnchor.constraint(equalTo: hero.bottomAnchor, constant: -16)
2706 2711
         ])
2707 2712
 
2713
+        let benefitsTopSpacer = NSView()
2714
+        benefitsTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2715
+        benefitsTopSpacer.heightAnchor.constraint(equalToConstant: 40).isActive = true
2716
+        contentStack.addArrangedSubview(benefitsTopSpacer)
2717
+
2708 2718
         let benefitsRow = NSStackView()
2709 2719
         benefitsRow.translatesAutoresizingMaskIntoConstraints = false
2710 2720
         benefitsRow.orientation = .horizontal
@@ -2720,9 +2730,7 @@ private extension ViewController {
2720 2730
 
2721 2731
         let midTopSpacer = NSView()
2722 2732
         midTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2723
-        midTopSpacer.setContentHuggingPriority(.defaultLow, for: .vertical)
2724
-        midTopSpacer.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
2725
-        midTopSpacer.heightAnchor.constraint(greaterThanOrEqualToConstant: 8).isActive = true
2733
+        midTopSpacer.heightAnchor.constraint(equalToConstant: 6).isActive = true
2726 2734
         contentStack.addArrangedSubview(midTopSpacer)
2727 2735
 
2728 2736
         let plansRow = NSStackView()
@@ -2778,9 +2786,7 @@ private extension ViewController {
2778 2786
 
2779 2787
         let midBottomSpacer = NSView()
2780 2788
         midBottomSpacer.translatesAutoresizingMaskIntoConstraints = false
2781
-        midBottomSpacer.setContentHuggingPriority(.defaultLow, for: .vertical)
2782
-        midBottomSpacer.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
2783
-        midBottomSpacer.heightAnchor.constraint(greaterThanOrEqualToConstant: 18).isActive = true
2789
+        midBottomSpacer.heightAnchor.constraint(equalToConstant: 8).isActive = true
2784 2790
         contentStack.addArrangedSubview(midBottomSpacer)
2785 2791
 
2786 2792
         let offer = textLabel(paywallOfferText(for: selectedPremiumPlan), font: NSFont.systemFont(ofSize: 13, weight: .semibold), color: palette.textPrimary)
@@ -2841,7 +2847,6 @@ private extension ViewController {
2841 2847
         footerTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2842 2848
         contentStack.addArrangedSubview(footerTopSpacer)
2843 2849
         footerTopSpacer.heightAnchor.constraint(equalToConstant: 4).isActive = true
2844
-        midTopSpacer.heightAnchor.constraint(equalTo: midBottomSpacer.heightAnchor).isActive = true
2845 2850
 
2846 2851
         let footer = paywallFooterLinks()
2847 2852
         contentStack.addArrangedSubview(footer)
@@ -2850,7 +2855,7 @@ private extension ViewController {
2850 2855
         NSLayoutConstraint.activate([
2851 2856
             contentStack.centerXAnchor.constraint(equalTo: panel.centerXAnchor),
2852 2857
             contentStack.widthAnchor.constraint(equalToConstant: paywallLayoutWidth),
2853
-            contentStack.topAnchor.constraint(equalTo: panel.topAnchor, constant: 30),
2858
+            contentStack.topAnchor.constraint(equalTo: panel.topAnchor, constant: 52),
2854 2859
             contentStack.bottomAnchor.constraint(equalTo: panel.bottomAnchor, constant: -10)
2855 2860
         ])
2856 2861