Просмотр исходного кода

Merge pull request #542 from loopandlearn/fix-for-singular-matrix-warning

Fix for singular matrix warning
Marion Barker 4 месяцев назад
Родитель
Сommit
7f31ef7b7d
2 измененных файлов с 27 добавлено и 2 удалено
  1. 21 1
      Podfile
  2. 6 1
      Pods/Charts/Source/Charts/Utils/Transformer.swift

+ 21 - 1
Podfile

@@ -3,5 +3,25 @@ target 'LoopFollow' do
 
   pod 'Charts'
   pod 'ShareClient', :git => 'https://github.com/loopandlearn/dexcom-share-client-swift.git', :branch => 'loopfollow'
-  
+
+end
+
+post_install do |installer|
+  # Patch Charts Transformer to avoid "CGAffineTransformInvert: singular matrix"
+  # warnings when chart views have zero dimensions (before layout).
+  transformer = 'Pods/Charts/Source/Charts/Utils/Transformer.swift'
+  if File.exist?(transformer)
+    code = File.read(transformer)
+    original = 'return valueToPixelMatrix.inverted()'
+    patched = <<~SWIFT.chomp
+      let matrix = valueToPixelMatrix
+            guard matrix.a * matrix.d - matrix.b * matrix.c != 0 else {
+                return .identity
+            }
+            return matrix.inverted()
+    SWIFT
+    if code.include?(original)
+      File.write(transformer, code.sub(original, patched))
+    end
+  end
 end

+ 6 - 1
Pods/Charts/Source/Charts/Utils/Transformer.swift

@@ -165,6 +165,11 @@ open class Transformer: NSObject
     
     @objc open var pixelToValueMatrix: CGAffineTransform
     {
-        return valueToPixelMatrix.inverted()
+        let matrix = valueToPixelMatrix
+        // Guard against singular matrix when chart has zero dimensions (before layout)
+        guard matrix.a * matrix.d - matrix.b * matrix.c != 0 else {
+            return .identity
+        }
+        return matrix.inverted()
     }
 }