fix: Solve wrong calculation in scroll indicator
This commit is contained in:
+18
-6
@@ -47,7 +47,7 @@ class SeismicNetworkScrollIndicatorView: UIView {
|
||||
seismics.enumerated().forEach { index, seismic in
|
||||
// Disegniamo un rettangolo per ogni sisma, quello evidenziato deve avere un contorno rosso.
|
||||
// Ci sono situazioni in cui ci sono molti sismi da mostrare, quindi in quel caso facciamo alcune modifiche:
|
||||
// - usiamo un'altezza minma per il sisma evidenziato
|
||||
// - usiamo un'altezza minima per il sisma evidenziato
|
||||
// - per il sisma evidenziato, anche il contenuto è rosso (e non solo il bordo)
|
||||
// - negli altri sismi, non mostriamo il bordo
|
||||
|
||||
@@ -74,9 +74,22 @@ class SeismicNetworkScrollIndicatorView: UIView {
|
||||
// Dobbiamo eventualmente calcolare un offset aggiuntivo,
|
||||
// perchè il sisma evidenziato ha un'altezza maggiore (se i rettangoli sono piccoli)
|
||||
let rectHeight = rectStandardHeight
|
||||
let offset: CGFloat = (index > highlightIndex && smallRectangles) ? rectHighlightedMinHeight : 0
|
||||
let yPosition = CGFloat(index) * rectHeight + offset
|
||||
let rectangle = CGRect(x: 0, y: yPosition, width: rectStandardWidth, height: rectHeight)
|
||||
|
||||
var offset: CGFloat = 0
|
||||
if index > highlightIndex && smallRectangles {
|
||||
// calcoliamo l'offset prima del rettangolo evidenziato
|
||||
let preOffset = CGFloat(highlightIndex - 1) * rectStandardHeight
|
||||
// offset diverso dovuto all'altezza diversa del rettangolo evidenziato
|
||||
let highlightOffset = rectHighlightedMinHeight
|
||||
// calcoliamo l'offset tra il rettangolo evidenziato e quello corrente
|
||||
let postOffset = CGFloat(index - highlightIndex) * rectStandardHeight
|
||||
offset = preOffset + highlightOffset + postOffset
|
||||
} else {
|
||||
// siamo prima del rettangolo evidenziato, non abbiamo calcoli da fare
|
||||
offset = CGFloat(index) * rectHeight
|
||||
}
|
||||
|
||||
let rectangle = CGRect(x: 0, y: offset, width: rectStandardWidth, height: rectHeight)
|
||||
|
||||
let fillColor = seismic.colors.textColor.withAlphaComponent(0.3)
|
||||
context?.setFillColor(fillColor.cgColor)
|
||||
@@ -87,8 +100,7 @@ class SeismicNetworkScrollIndicatorView: UIView {
|
||||
let borderWidth: CGFloat = 0.5
|
||||
context?.setStrokeColor(AppTheme.Colors.gray.cgColor)
|
||||
context?.setLineWidth(borderWidth) // Spessore del bordo
|
||||
context?.stroke(rectangle) // Evita che il bordo venga tagliato
|
||||
|
||||
context?.stroke(rectangle)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user