Selaa lähdekoodia

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 6 tuntia sitten
vanhempi
commit
0795c53df5
1 muutettua tiedostoa jossa 13 lisäystä ja 8 poistoa
  1. 13 8
      classroom_app/ViewController.swift

+ 13 - 8
classroom_app/ViewController.swift

@@ -2678,6 +2678,11 @@ private extension ViewController {
2678
         contentStack.addArrangedSubview(topRow)
2678
         contentStack.addArrangedSubview(topRow)
2679
         topRow.widthAnchor.constraint(equalTo: contentStack.widthAnchor).isActive = true
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
         let hero = roundedContainer(cornerRadius: 16, color: palette.sectionCard)
2686
         let hero = roundedContainer(cornerRadius: 16, color: palette.sectionCard)
2682
         hero.translatesAutoresizingMaskIntoConstraints = false
2687
         hero.translatesAutoresizingMaskIntoConstraints = false
2683
         styleSurface(hero, borderColor: palette.inputBorder, borderWidth: 1, shadow: false)
2688
         styleSurface(hero, borderColor: palette.inputBorder, borderWidth: 1, shadow: false)
@@ -2705,6 +2710,11 @@ private extension ViewController {
2705
             heroSubtitle.bottomAnchor.constraint(equalTo: hero.bottomAnchor, constant: -16)
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
         let benefitsRow = NSStackView()
2718
         let benefitsRow = NSStackView()
2709
         benefitsRow.translatesAutoresizingMaskIntoConstraints = false
2719
         benefitsRow.translatesAutoresizingMaskIntoConstraints = false
2710
         benefitsRow.orientation = .horizontal
2720
         benefitsRow.orientation = .horizontal
@@ -2720,9 +2730,7 @@ private extension ViewController {
2720
 
2730
 
2721
         let midTopSpacer = NSView()
2731
         let midTopSpacer = NSView()
2722
         midTopSpacer.translatesAutoresizingMaskIntoConstraints = false
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
         contentStack.addArrangedSubview(midTopSpacer)
2734
         contentStack.addArrangedSubview(midTopSpacer)
2727
 
2735
 
2728
         let plansRow = NSStackView()
2736
         let plansRow = NSStackView()
@@ -2778,9 +2786,7 @@ private extension ViewController {
2778
 
2786
 
2779
         let midBottomSpacer = NSView()
2787
         let midBottomSpacer = NSView()
2780
         midBottomSpacer.translatesAutoresizingMaskIntoConstraints = false
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
         contentStack.addArrangedSubview(midBottomSpacer)
2790
         contentStack.addArrangedSubview(midBottomSpacer)
2785
 
2791
 
2786
         let offer = textLabel(paywallOfferText(for: selectedPremiumPlan), font: NSFont.systemFont(ofSize: 13, weight: .semibold), color: palette.textPrimary)
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
         footerTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2847
         footerTopSpacer.translatesAutoresizingMaskIntoConstraints = false
2842
         contentStack.addArrangedSubview(footerTopSpacer)
2848
         contentStack.addArrangedSubview(footerTopSpacer)
2843
         footerTopSpacer.heightAnchor.constraint(equalToConstant: 4).isActive = true
2849
         footerTopSpacer.heightAnchor.constraint(equalToConstant: 4).isActive = true
2844
-        midTopSpacer.heightAnchor.constraint(equalTo: midBottomSpacer.heightAnchor).isActive = true
2845
 
2850
 
2846
         let footer = paywallFooterLinks()
2851
         let footer = paywallFooterLinks()
2847
         contentStack.addArrangedSubview(footer)
2852
         contentStack.addArrangedSubview(footer)
@@ -2850,7 +2855,7 @@ private extension ViewController {
2850
         NSLayoutConstraint.activate([
2855
         NSLayoutConstraint.activate([
2851
             contentStack.centerXAnchor.constraint(equalTo: panel.centerXAnchor),
2856
             contentStack.centerXAnchor.constraint(equalTo: panel.centerXAnchor),
2852
             contentStack.widthAnchor.constraint(equalToConstant: paywallLayoutWidth),
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
             contentStack.bottomAnchor.constraint(equalTo: panel.bottomAnchor, constant: -10)
2859
             contentStack.bottomAnchor.constraint(equalTo: panel.bottomAnchor, constant: -10)
2855
         ])
2860
         ])
2856
 
2861