Sfoglia il codice sorgente

Merge pull request #485 from loopandlearn/update-icon

Update app icon for ios26
Marion Barker 6 mesi fa
parent
commit
76af3fa1a4
20 ha cambiato i file con 180 aggiunte e 0 eliminazioni
  1. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/1024.png
  2. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/120-1.png
  3. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/120.png
  4. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/152.png
  5. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/167.png
  6. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/180.png
  7. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/20.png
  8. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/29.png
  9. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40-1.png
  10. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40-2.png
  11. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40.png
  12. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/58-1.png
  13. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/58.png
  14. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/60.png
  15. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/76.png
  16. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/80-1.png
  17. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/80.png
  18. BIN
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/87.png
  19. 71 0
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/convert_icon.sh
  20. 109 0
      LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/loopfollow-icon.svg

BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/1024.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/120-1.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/120.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/152.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/167.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/180.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/20.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/29.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40-1.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40-2.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/40.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/58-1.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/58.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/60.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/76.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/80-1.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/80.png


BIN
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/87.png


+ 71 - 0
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/convert_icon.sh

@@ -0,0 +1,71 @@
+#!/bin/bash
+# Convert SVG icon to all required iOS app icon PNG sizes using Inkscape
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+SVG_PATH="$SCRIPT_DIR/loopfollow-icon.svg"
+
+if [ ! -f "$SVG_PATH" ]; then
+    echo "Error: SVG file not found at $SVG_PATH"
+    exit 1
+fi
+
+if ! command -v inkscape &> /dev/null; then
+    echo "Error: Inkscape not found. Please install it first: brew install --cask inkscape"
+    exit 1
+fi
+
+echo "Converting SVG to iOS app icon PNGs using Inkscape..."
+echo "Source: $SVG_PATH"
+echo ""
+
+# iOS app icon sizes (filename size pairs)
+icon_sizes=(
+    "20.png 20"
+    "29.png 29"
+    "40.png 40"
+    "40-1.png 40"
+    "40-2.png 40"
+    "58.png 58"
+    "58-1.png 58"
+    "60.png 60"
+    "76.png 76"
+    "80.png 80"
+    "80-1.png 80"
+    "87.png 87"
+    "120.png 120"
+    "120-1.png 120"
+    "152.png 152"
+    "167.png 167"
+    "180.png 180"
+    "1024.png 1024"
+)
+
+success_count=0
+total_count=${#icon_sizes[@]}
+
+for entry in "${icon_sizes[@]}"; do
+    filename=$(echo $entry | cut -d' ' -f1)
+    size=$(echo $entry | cut -d' ' -f2)
+    png_path="$SCRIPT_DIR/$filename"
+    
+    # Inkscape export command
+    if inkscape "$SVG_PATH" --export-filename="$png_path" --export-width=$size --export-height=$size --export-type=png 2>/dev/null; then
+        echo "✓ Created $filename (${size}x${size})"
+        ((success_count++))
+    else
+        echo "✗ Error creating $filename"
+    fi
+done
+
+echo ""
+echo "✓ Successfully created $success_count/$total_count icon files"
+
+if [ $success_count -eq $total_count ]; then
+    echo ""
+    echo "All icons created successfully!"
+    exit 0
+else
+    echo ""
+    echo "Some icons failed to create. Please check errors above."
+    exit 1
+fi

+ 109 - 0
LoopFollow/Resources/Assets.xcassets/AppIcon.appiconset/loopfollow-icon.svg

@@ -0,0 +1,109 @@
+<svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <!-- Glass background gradient -->
+    <linearGradient id="glassBg" x1="0%" y1="0%" x2="100%" y2="100%">
+      <stop offset="0%" style="stop-color:#F8F9FA;stop-opacity:1" />
+      <stop offset="50%" style="stop-color:#FFFFFF;stop-opacity:1" />
+      <stop offset="100%" style="stop-color:#F0F2F5;stop-opacity:1" />
+    </linearGradient>
+    
+    <!-- Blue glass ring gradient -->
+    <linearGradient id="blueGlass" x1="0%" y1="0%" x2="100%" y2="100%">
+      <stop offset="0%" style="stop-color:#5BA3F5;stop-opacity:0.95" />
+      <stop offset="30%" style="stop-color:#4A90E2;stop-opacity:1" />
+      <stop offset="70%" style="stop-color:#4A90E2;stop-opacity:1" />
+      <stop offset="100%" style="stop-color:#3A7BC8;stop-opacity:0.95" />
+    </linearGradient>
+    
+    <!-- Glass highlight (top) -->
+    <linearGradient id="topHighlight" x1="0%" y1="0%" x2="0%" y2="100%">
+      <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.6" />
+      <stop offset="40%" style="stop-color:#FFFFFF;stop-opacity:0.3" />
+      <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
+    </linearGradient>
+    
+    <!-- Glass reflection (curved) -->
+    <radialGradient id="glassReflection" cx="50%" cy="30%">
+      <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.5" />
+      <stop offset="50%" style="stop-color:#FFFFFF;stop-opacity:0.2" />
+      <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
+    </radialGradient>
+    
+    <!-- Inner glass highlight -->
+    <radialGradient id="innerHighlight" cx="50%" cy="45%">
+      <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:0.4" />
+      <stop offset="60%" style="stop-color:#FFFFFF;stop-opacity:0.1" />
+      <stop offset="100%" style="stop-color:#FFFFFF;stop-opacity:0" />
+    </radialGradient>
+    
+    <!-- Blue ring inner shadow -->
+    <radialGradient id="ringShadow" cx="50%" cy="50%">
+      <stop offset="70%" style="stop-color:#000000;stop-opacity:0" />
+      <stop offset="85%" style="stop-color:#000000;stop-opacity:0.15" />
+      <stop offset="100%" style="stop-color:#000000;stop-opacity:0.25" />
+    </radialGradient>
+    
+    <!-- Glass blur for soft edges -->
+    <filter id="softBlur">
+      <feGaussianBlur in="SourceGraphic" stdDeviation="1"/>
+    </filter>
+    
+    <!-- Glass blur for highlights -->
+    <filter id="highlightBlur">
+      <feGaussianBlur in="SourceGraphic" stdDeviation="3"/>
+    </filter>
+  </defs>
+  
+  <!-- Glass background -->
+  <rect x="0" y="0" width="1024" height="1024" 
+        fill="url(#glassBg)"/>
+  
+  <!-- Main glass highlight across top -->
+  <rect x="0" y="0" width="1024" height="512" 
+        fill="url(#topHighlight)"/>
+  
+  <!-- Curved glass reflection -->
+  <ellipse cx="512" cy="256" rx="600" ry="400" 
+           fill="url(#glassReflection)"
+           opacity="0.8"/>
+  
+  <!-- Blue glass ring - outer -->
+  <circle cx="512" cy="512" r="450" 
+          fill="url(#blueGlass)"/>
+  
+  <!-- Blue ring inner shadow for depth -->
+  <circle cx="512" cy="512" r="450" 
+          fill="url(#ringShadow)"/>
+  
+  <!-- White inner circle to create ring -->
+  <circle cx="512" cy="512" r="315" 
+          fill="#FFFFFF"
+          opacity="0.98"/>
+  
+  <!-- Glass highlight on white ring area -->
+  <ellipse cx="512" cy="380" rx="380" ry="200" 
+           fill="url(#innerHighlight)"
+           opacity="0.7"/>
+  
+  <!-- White center circle -->
+  <circle cx="512" cy="512" r="200" 
+          fill="#FFFFFF"
+          opacity="0.95"/>
+  
+  <!-- Center glass highlight -->
+  <ellipse cx="512" cy="420" rx="180" ry="120" 
+           fill="url(#innerHighlight)"
+           opacity="0.6"/>
+  
+  <!-- Additional glass reflection on blue ring -->
+  <ellipse cx="512" cy="320" rx="420" ry="250" 
+           fill="#FFFFFF" 
+           opacity="0.25"
+           filter="url(#highlightBlur)"/>
+  
+  <!-- Subtle bottom shadow for depth -->
+  <ellipse cx="512" cy="700" rx="450" ry="100" 
+           fill="#000000" 
+           opacity="0.05"
+           filter="url(#softBlur)"/>
+</svg>