Commit 2d2dd5f8 by Dmitriy Stepanets

Legend: Open/Close animation

parent 4ac66174
......@@ -7,7 +7,7 @@
<key>1Weather.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>24</integer>
<integer>22</integer>
</dict>
<key>PG (Playground) 1.xcscheme</key>
<dict>
......
......@@ -121,7 +121,7 @@ public class LocationManager {
}
}
guard index < locations.count else {
assertionFailure("This shouldn't happen. Got to investigate.")
// assertionFailure("This shouldn't happen. Got to investigate.")
// But in runtime we can handle it gracefully
DispatchQueue.main.async {
self.selectedLocationIndex = self.locations.count > 0 ? 0 : nil
......
......@@ -6,9 +6,12 @@
//
import UIKit
import SnapKit
class MapLegendView: UIView {
//Private
private let kOpenWidth:CGFloat = 180
private let kCloseWidth:CGFloat = 40
private let kPrecipitationColors = [UIColor(hex: 0x9c57fa).cgColor,
UIColor(hex: 0x5ef0e8).withAlphaComponent(0.8).cgColor,
UIColor(hex: 0x4ebaf6).cgColor]
......@@ -17,6 +20,7 @@ class MapLegendView: UIView {
private let buttonGradient = CAGradientLayer()
private let legendGradient = CAGradientLayer()
private let legendLabels = [UILabel]()
private var widthConstraint:Constraint?
private var isOpened = false
init() {
......@@ -57,11 +61,22 @@ class MapLegendView: UIView {
}
@objc private func handleButton() {
if isOpened {
if self.isOpened {
self.isOpened = false
self.snp.updateConstraints { (update) in
update.width.equalTo(self.kCloseWidth)
}
}
else {
self.isOpened = true
self.snp.updateConstraints { (update) in
update.width.equalTo(self.kOpenWidth)
}
}
self.setNeedsLayout()
UIView.animate(withDuration: 0.3) {
self.superview?.layoutIfNeeded()
}
}
}
......@@ -74,6 +89,11 @@ private extension MapLegendView {
layer.shadowOffset = .init(width: 0, height: 3)
layer.shadowOpacity = 1
layer.shadowRadius = 5
self.snp.makeConstraints { (make) in
self.widthConstraint = make.width.equalTo(40).priority(1000).constraint
make.height.equalTo(40).priority(1000)
}
}
func prepareViewGradient() {
......
......@@ -142,10 +142,9 @@ private extension RadarViewController {
make.right.equalToSuperview().inset(8)
}
//Precipitation
//Legend
view.addSubview(legendView)
legendView.snp.makeConstraints { (make) in
make.width.height.equalTo(40)
make.right.equalToSuperview().inset(8)
make.bottom.equalTo(locationButton.snp.top).offset(-18)
}
......@@ -184,7 +183,7 @@ private extension RadarViewController {
}
func prepareMapTimeControl() {
view.addSubview(mapTimeControlView)
view.insertSubview(mapTimeControlView, belowSubview: legendView)
mapTimeControlView.snp.makeConstraints { (make) in
make.left.equalToSuperview().inset(4)
make.bottom.equalTo(pinnedLayersView.snp.top).offset(-4)
......
......@@ -11,12 +11,17 @@
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>AlgoliaSearchClient.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>20</integer>
</dict>
<key>BezierKit.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>1</integer>
<integer>0</integer>
</dict>
<key>Cirque.xcscheme</key>
<dict>
......@@ -25,6 +30,11 @@
<key>orderHint</key>
<integer>2</integer>
</dict>
<key>Cirque.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>18</integer>
</dict>
<key>Firebase.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -32,6 +42,11 @@
<key>orderHint</key>
<integer>3</integer>
</dict>
<key>Firebase.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>16</integer>
</dict>
<key>FirebaseABTesting.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -39,6 +54,11 @@
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>FirebaseABTesting.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>4</integer>
</dict>
<key>FirebaseAnalytics.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -46,6 +66,11 @@
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>FirebaseAnalytics.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>FirebaseCore.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -53,6 +78,11 @@
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>FirebaseCore.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>15</integer>
</dict>
<key>FirebaseCoreDiagnostics.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -60,6 +90,11 @@
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>FirebaseCoreDiagnostics.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>FirebaseCrashlytics.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -67,6 +102,11 @@
<key>orderHint</key>
<integer>8</integer>
</dict>
<key>FirebaseCrashlytics.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>19</integer>
</dict>
<key>FirebaseInstallations.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -74,6 +114,11 @@
<key>orderHint</key>
<integer>9</integer>
</dict>
<key>FirebaseInstallations.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>6</integer>
</dict>
<key>FirebaseRemoteConfig.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -81,6 +126,11 @@
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>FirebaseRemoteConfig.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>23</integer>
</dict>
<key>Flurry-iOS-SDK.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -88,6 +138,11 @@
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>Flurry-iOS-SDK.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>24</integer>
</dict>
<key>GoogleAppMeasurement.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -95,6 +150,11 @@
<key>orderHint</key>
<integer>12</integer>
</dict>
<key>GoogleAppMeasurement.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>10</integer>
</dict>
<key>GoogleDataTransport.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -102,6 +162,11 @@
<key>orderHint</key>
<integer>13</integer>
</dict>
<key>GoogleDataTransport.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>5</integer>
</dict>
<key>GoogleUtilities.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -109,6 +174,11 @@
<key>orderHint</key>
<integer>14</integer>
</dict>
<key>GoogleUtilities.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
</dict>
<key>Localize-Swift.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -116,6 +186,11 @@
<key>orderHint</key>
<integer>15</integer>
</dict>
<key>Localize-Swift.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>11</integer>
</dict>
<key>Logging.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -123,6 +198,11 @@
<key>orderHint</key>
<integer>16</integer>
</dict>
<key>Logging.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>17</integer>
</dict>
<key>MORichNotification.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -130,6 +210,11 @@
<key>orderHint</key>
<integer>18</integer>
</dict>
<key>MORichNotification.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>7</integer>
</dict>
<key>MoEngage-iOS-SDK.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -137,12 +222,17 @@
<key>orderHint</key>
<integer>17</integer>
</dict>
<key>MoEngage-iOS-SDK.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>13</integer>
</dict>
<key>Pods-1Weather.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>20</integer>
<integer>1</integer>
</dict>
<key>PromisesObjC.xcscheme</key>
<dict>
......@@ -151,12 +241,17 @@
<key>orderHint</key>
<integer>21</integer>
</dict>
<key>PromisesObjC.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>21</integer>
</dict>
<key>SnapKit.xcscheme</key>
<dict>
<key>isShown</key>
<false/>
<key>orderHint</key>
<integer>22</integer>
<integer>2</integer>
</dict>
<key>XMLCoder.xcscheme</key>
<dict>
......@@ -165,6 +260,11 @@
<key>orderHint</key>
<integer>23</integer>
</dict>
<key>XMLCoder.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>14</integer>
</dict>
<key>nanopb.xcscheme</key>
<dict>
<key>isShown</key>
......@@ -172,6 +272,11 @@
<key>orderHint</key>
<integer>19</integer>
</dict>
<key>nanopb.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>12</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment