Commit 2d2dd5f8 by Dmitriy Stepanets

Legend: Open/Close animation

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