Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
1
1weather
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
1weather
Commits
67758c81
Commit
67758c81
authored
Aug 25, 2021
by
Dmitriy Stepanets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Working on minutely forecast UI
parent
aeccaa9b
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
223 additions
and
6 deletions
+223
-6
1Weather.xcodeproj/project.pbxproj
+28
-5
1Weather/UI/Controls/ForecastTimePeriodControl.swift
+1
-0
1Weather/UI/SharedCells/MinutelyForecastCell/MinutelyForecastCell.swift
+22
-0
1Weather/UI/SharedViews/ForecastDescriptionView.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/Buttons/ForecastDetailPeriodButton.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/Buttons/ForecastPeriodButton.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/Buttons/ForecastWindButton.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/Buttons/PeriodButtonProtocol.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/ForecastTimePeriodView.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/GraphLine.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/GraphLineSettings.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/GraphView.swift
+0
-0
1Weather/UI/SharedViews/ForecastTimePeriod/TimePeriodOffsetHolder.swift
+0
-0
1Weather/UI/SharedViews/GradientView.swift
+0
-0
1Weather/UI/SharedViews/InnerShadowLayer.swift
+0
-0
1Weather/UI/SharedViews/MinutelyForecastView.swift
+133
-0
1Weather/UI/View controllers/Forecast/Cells/ForecastCellFactory.swift
+12
-0
1Weather/UI/View controllers/Forecast/ForecastViewController.swift
+2
-0
1Weather/UI/View controllers/Today/Cells/TodayForecastTimePeriodCell.swift
+25
-1
No files found.
1Weather.xcodeproj/project.pbxproj
View file @
67758c81
...
...
@@ -175,6 +175,8 @@
CDAC9B8526319B0500AC1BF4
/* MapTimeControlItem.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDAC9B8426319B0500AC1BF4
/* MapTimeControlItem.swift */
;
};
CDAD97B1262042B2007FCFB1
/* MapButton.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDAD97B0262042B2007FCFB1
/* MapButton.swift */
;
};
CDAD97B426207D14007FCFB1
/* MapTimeControlView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDAD97B326207D14007FCFB1
/* MapTimeControlView.swift */
;
};
CDADBBA426D64948006E4565
/* MinutelyForecastCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDADBBA326D64948006E4565
/* MinutelyForecastCell.swift */
;
};
CDADBBA726D6552A006E4565
/* MinutelyForecastView.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDADBBA626D6552A006E4565
/* MinutelyForecastView.swift */
;
};
CDB0D4CA2670CAD00081C773
/* ShortsCollectionViewCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDB0D4C92670CAD00081C773
/* ShortsCollectionViewCell.swift */
;
};
CDB0D4CC2670D12F0081C773
/* TodayShortsCell.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDB0D4CB2670D12F0081C773
/* TodayShortsCell.swift */
;
};
CDB0D4CE2670DABF0081C773
/* UIImage+AverageColor.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
CDB0D4CD2670DABF0081C773
/* UIImage+AverageColor.swift */
;
};
...
...
@@ -478,6 +480,8 @@
CDAC9B8426319B0500AC1BF4
/* MapTimeControlItem.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
MapTimeControlItem.swift
;
sourceTree
=
"<group>"
;
};
CDAD97B0262042B2007FCFB1
/* MapButton.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
MapButton.swift
;
sourceTree
=
"<group>"
;
};
CDAD97B326207D14007FCFB1
/* MapTimeControlView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
MapTimeControlView.swift
;
sourceTree
=
"<group>"
;
};
CDADBBA326D64948006E4565
/* MinutelyForecastCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
MinutelyForecastCell.swift
;
sourceTree
=
"<group>"
;
};
CDADBBA626D6552A006E4565
/* MinutelyForecastView.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
MinutelyForecastView.swift
;
sourceTree
=
"<group>"
;
};
CDB0D4C92670CAD00081C773
/* ShortsCollectionViewCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
ShortsCollectionViewCell.swift
;
sourceTree
=
"<group>"
;
};
CDB0D4CB2670D12F0081C773
/* TodayShortsCell.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
TodayShortsCell.swift
;
sourceTree
=
"<group>"
;
};
CDB0D4CD2670DABF0081C773
/* UIImage+AverageColor.swift */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
sourcecode.swift
;
path
=
"UIImage+AverageColor.swift"
;
sourceTree
=
"<group>"
;
};
...
...
@@ -1171,9 +1175,30 @@
path
=
MapTimeControl
;
sourceTree
=
"<group>"
;
};
CDADBBA226D64921006E4565
/* MinutelyForecastCell */
=
{
isa
=
PBXGroup
;
children
=
(
CDADBBA326D64948006E4565
/* MinutelyForecastCell.swift */
,
);
path
=
MinutelyForecastCell
;
sourceTree
=
"<group>"
;
};
CDADBBA526D654FA006E4565
/* SharedViews */
=
{
isa
=
PBXGroup
;
children
=
(
CD0A2CC325FA5857006148A4
/* ForecastTimePeriod */
,
CD1237F3255D889F00C98139
/* GradientView.swift */
,
CD86246B25E6826A0097F3FB
/* InnerShadowLayer.swift */
,
CD32CDFE260B2E5400235081
/* ForecastDescriptionView.swift */
,
CDADBBA626D6552A006E4565
/* MinutelyForecastView.swift */
,
);
path
=
SharedViews
;
sourceTree
=
"<group>"
;
};
CDC0C7AE261310DB0030607A
/* SharedCells */
=
{
isa
=
PBXGroup
;
children
=
(
CDADBBA226D64921006E4565
/* MinutelyForecastCell */
,
CEEB354A266F687300E16F90
/* AdCells */
,
CD86246325E66E6B0097F3FB
/* PrecipCell */
,
CD86245B25E646000097F3FB
/* SunPhaseCell */
,
...
...
@@ -1221,6 +1246,7 @@
CDD0F1DC2572400200CF5017
/* UI */
=
{
isa
=
PBXGroup
;
children
=
(
CDADBBA526D654FA006E4565
/* SharedViews */
,
CDC0C7AE261310DB0030607A
/* SharedCells */
,
CD15DB3B25DA6C2800024727
/* Controls */
,
CD6B3039257267FB004B34B3
/* Buttons */
,
...
...
@@ -1258,14 +1284,10 @@
CDD0F1F025725BD700CF5017
/* Helpers */
=
{
isa
=
PBXGroup
;
children
=
(
CD0A2CC325FA5857006148A4
/* ForecastTimePeriod */
,
CD6B304125726ABE004B34B3
/* Themes */
,
CD1237F3255D889F00C98139
/* GradientView.swift */
,
CDD0F1E72572429E00CF5017
/* AppFont.swift */
,
CDD0F1ED25725BCF00CF5017
/* ThemeManager.swift */
,
CD50555E26983C14006776AB
/* CubicCurveAlgorithm.swift */
,
CD86246B25E6826A0097F3FB
/* InnerShadowLayer.swift */
,
CD32CDFE260B2E5400235081
/* ForecastDescriptionView.swift */
,
);
path
=
Helpers
;
sourceTree
=
"<group>"
;
...
...
@@ -1885,6 +1907,7 @@
CEEB3549266F5DA900E16F90
/* MRECAdCell.swift in Sources */
,
CDB0D4CA2670CAD00081C773
/* ShortsCollectionViewCell.swift in Sources */
,
CDDCD5092680C18B00E089AD
/* ShortsUnreadNudgeView.swift in Sources */
,
CDADBBA726D6552A006E4565
/* MinutelyForecastView.swift in Sources */
,
CE13B818262480B3007CBD4D
/* A9BidObject.swift in Sources */
,
CD85796A2671FA8100CC4CDA
/* ShortsCoordinator.swift in Sources */
,
CDB0D4CE2670DABF0081C773
/* UIImage+AverageColor.swift in Sources */
,
...
...
@@ -1961,11 +1984,11 @@
CD6B303E25726960004B34B3
/* ThemeProtocol.swift in Sources */
,
CD6B303B2572680C004B34B3
/* SelfSizingButton.swift in Sources */
,
CDC62C4726C13BE300156643
/* OnboardingContentController.swift in Sources */
,
CD9B6B1125DBC723001D9B80
/* CubicCurveAlgorithm.swift in Sources */
,
CD8B60B4263819790055CB3F
/* NotificationsViewController.swift in Sources */
,
CD67617026259D220079D273
/* RadarMapLayersController.swift in Sources */
,
CEC8FBAF2639756A0001A6BF
/* OnboardingViewController.swift in Sources */
,
CD866A65260F642600E96A5C
/* SettingsDetailsViewController.swift in Sources */
,
CDADBBA426D64948006E4565
/* MinutelyForecastCell.swift in Sources */
,
CD647D0225ED07D60034578B
/* TodayViewModel.swift in Sources */
,
CD593BD32608BC3F00C93428
/* ForecastDayCell.swift in Sources */
,
CD8B60AB263819400055CB3F
/* NWSAlertCellFactory.swift in Sources */
,
...
...
1Weather/UI/Controls/ForecastTimePeriodControl.swift
View file @
67758c81
...
...
@@ -10,6 +10,7 @@ import UIKit
enum
TimePeriod
:
Int
{
case
daily
=
0
case
hourly
=
1
case
minutely
=
2
}
class
ForecastTimePeriodControl
:
UISegmentedControl
{
...
...
1Weather/UI/SharedCells/MinutelyForecastCell/MinutelyForecastCell.swift
0 → 100644
View file @
67758c81
//
// MinutelyForecastCell.swift
// 1Weather
//
// Created by Dmitry Stepanets on 25.08.2021.
//
import
UIKit
class
MinutelyForecastCell
:
UITableViewCell
{
private
let
horizontalStackView
=
UIStackView
()
override
init
(
style
:
UITableViewCell
.
CellStyle
,
reuseIdentifier
:
String
?)
{
super
.
init
(
style
:
style
,
reuseIdentifier
:
reuseIdentifier
)
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
}
1Weather/UI/
Helper
s/ForecastDescriptionView.swift
→
1Weather/UI/
SharedView
s/ForecastDescriptionView.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/Buttons/ForecastDetailPeriodButton.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/Buttons/ForecastDetailPeriodButton.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/Buttons/ForecastPeriodButton.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/Buttons/ForecastPeriodButton.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/Buttons/ForecastWindButton.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/Buttons/ForecastWindButton.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/Buttons/PeriodButtonProtocol.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/Buttons/PeriodButtonProtocol.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/ForecastTimePeriodView.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/ForecastTimePeriodView.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/GraphLine.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/GraphLine.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/GraphLineSettings.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/GraphLineSettings.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/GraphView.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/GraphView.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/ForecastTimePeriod/TimePeriodOffsetHolder.swift
→
1Weather/UI/
SharedView
s/ForecastTimePeriod/TimePeriodOffsetHolder.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/GradientView.swift
→
1Weather/UI/
SharedView
s/GradientView.swift
View file @
67758c81
File moved
1Weather/UI/
Helper
s/InnerShadowLayer.swift
→
1Weather/UI/
SharedView
s/InnerShadowLayer.swift
View file @
67758c81
File moved
1Weather/UI/SharedViews/MinutelyForecastView.swift
0 → 100644
View file @
67758c81
//
// MinutelyForecastView.swift
// 1Weather
//
// Created by Dmitry Stepanets on 25.08.2021.
//
import
UIKit
import
OneWeatherCore
enum
MinutelyForecastType
{
case
temperature
case
precipitation
}
private
class
MinutelyLevelView
:
UIView
{
init
()
{
super
.
init
(
frame
:
.
zero
)
backgroundColor
=
.
blue
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
layer
.
cornerRadius
=
frame
.
width
/
2
}
}
class
MinutelyForecastView
:
UIView
{
//Private
private
let
kTemperatureColors
=
[
UIColor
(
hex
:
0xff934f
),
UIColor
(
hex
:
0xff414a
)]
private
let
kPrecipitationColors
=
[
UIColor
(
hex
:
0x2d99ff
),
UIColor
(
hex
:
0x8fc6fb
)]
private
let
detailsInfoView
=
UIView
()
private
let
verticalStackView
=
UIStackView
()
private
let
scrollView
=
UIScrollView
()
private
var
location
:
Location
?
init
()
{
super
.
init
(
frame
:
.
zero
)
}
override
func
layoutSubviews
()
{
super
.
layoutSubviews
()
let
leftInset
=
detailsInfoView
.
frame
.
origin
.
x
scrollView
.
contentInset
=
.
init
(
top
:
0
,
left
:
leftInset
,
bottom
:
0
,
right
:
0
)
scrollView
.
setContentOffset
(
.
init
(
x
:
-
leftInset
,
y
:
0
),
animated
:
false
)
}
func
configure
(
with
location
:
Location
)
{
self
.
location
=
location
prepareDetailView
()
prepareVerticalStackView
()
prepareScrollView
()
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
}
//MARK:- Prepare
private
extension
MinutelyForecastView
{
func
prepareDetailView
()
{
detailsInfoView
.
backgroundColor
=
kTemperatureColors
[
0
]
addSubview
(
detailsInfoView
)
detailsInfoView
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
make
.
height
.
equalTo
(
38
)
make
.
width
.
equalTo
(
200
)
}
}
func
prepareVerticalStackView
()
{
verticalStackView
.
removeAll
()
verticalStackView
.
axis
=
.
vertical
verticalStackView
.
distribution
=
.
fillProportionally
verticalStackView
.
alignment
=
.
fill
verticalStackView
.
isBaselineRelativeArrangement
=
false
verticalStackView
.
isLayoutMarginsRelativeArrangement
=
false
for
index
in
0
..<
4
{
let
label
=
UILabel
()
label
.
text
=
"
\(
29
-
index
)
°"
label
.
font
=
AppFont
.
SFPro
.
regular
(
size
:
10
)
verticalStackView
.
addArrangedSubview
(
label
)
}
addSubview
(
verticalStackView
)
verticalStackView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalToSuperview
()
.
inset
(
20
)
make
.
top
.
equalTo
(
detailsInfoView
.
snp
.
bottom
)
.
offset
(
8
)
make
.
bottom
.
equalToSuperview
()
.
inset
(
40
)
}
}
func
prepareScrollView
()
{
scrollView
.
backgroundColor
=
.
red
addSubview
(
scrollView
)
let
levelsStackView
=
UIStackView
()
levelsStackView
.
axis
=
.
horizontal
levelsStackView
.
spacing
=
2
levelsStackView
.
distribution
=
.
fill
levelsStackView
.
alignment
=
.
bottom
scrollView
.
addSubview
(
levelsStackView
)
levelsStackView
.
snp
.
makeConstraints
{
(
make
)
in
make
.
edges
.
height
.
equalToSuperview
()
}
scrollView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
equalTo
(
verticalStackView
.
snp
.
right
)
.
offset
(
6
)
make
.
top
.
equalTo
(
detailsInfoView
.
snp
.
bottom
)
.
offset
(
8
)
make
.
right
.
equalToSuperview
()
.
inset
(
20
)
make
.
bottom
.
equalToSuperview
()
.
inset
(
40
)
}
for
_
in
0
..<
300
{
let
view
=
MinutelyLevelView
()
levelsStackView
.
addArrangedSubview
(
view
)
view
.
snp
.
makeConstraints
{
make
in
make
.
width
.
equalTo
(
3
)
make
.
height
.
equalToSuperview
()
.
multipliedBy
(
Double
.
random
(
in
:
0
...
0.9
))
}
}
}
}
1Weather/UI/View controllers/Forecast/Cells/ForecastCellFactory.swift
View file @
67758c81
...
...
@@ -21,6 +21,10 @@ private enum ForecastCellType {
case
precipitation
case
wind
//Minutely
case
minutely
case
precipitationAdviced
// Shared
case
adBanner
case
adMREC
...
...
@@ -168,6 +172,10 @@ class ForecastCellFactory: CellFactory {
}
}
return
cell
case
.
minutely
:
return
UITableViewCell
()
case
.
precipitationAdviced
:
return
UITableViewCell
()
}
}
...
...
@@ -177,6 +185,8 @@ class ForecastCellFactory: CellFactory {
return
self
.
dailySection
.
rows
[
indexPath
.
row
]
case
.
hourly
:
return
self
.
hourlySection
.
rows
[
indexPath
.
row
]
default
:
return
.
minutely
}
}
...
...
@@ -254,6 +264,8 @@ class ForecastCellFactory: CellFactory {
adTypeString
=
"MREC"
adLoggingEmoji
=
"✅"
}
default
:
break
}
adView
.
set
(
placementName
:
placementName
,
adType
:
adType
)
...
...
1Weather/UI/View controllers/Forecast/ForecastViewController.swift
View file @
67758c81
...
...
@@ -70,6 +70,8 @@ class ForecastViewController: UIViewController {
analytics
(
log
:
.
ANALYTICS_VIEW_FORECAST_EXTENDED
)
case
.
hourly
:
analytics
(
log
:
.
ANALYTICS_VIEW_FORECAST_HOURLY
)
default
:
break
}
}
...
...
1Weather/UI/View controllers/Today/Cells/TodayForecastTimePeriodCell.swift
View file @
67758c81
...
...
@@ -11,8 +11,10 @@ import OneWeatherCore
class
TodayForecastTimePeriodCell
:
UITableViewCell
{
//Private
private
let
periodSegmentedControl
=
ForecastTimePeriodControl
(
items
:
[
"forecast.timePeriod.daily"
.
localized
(),
"forecast.timePeriod.hourly"
.
localized
()])
"forecast.timePeriod.hourly"
.
localized
(),
"forecast.timePeriod.minutely"
.
localized
()])
private
let
forecastTimePeriodView
=
ForecastTimePeriodView
()
private
let
minutelyForecastView
=
MinutelyForecastView
()
private
let
descriptionView
=
ForecastDescriptionView
(
lightStyleBackgroundColor
:
UIColor
(
hex
:
0xfaedda
)
.
withAlphaComponent
(
0.5
),
gradientColors
:
[
UIColor
(
hex
:
0xe81e15
)
.
withAlphaComponent
(
0.33
)
.
cgColor
,
UIColor
(
hex
:
0xf71d11
)
.
withAlphaComponent
(
0
)
.
cgColor
])
...
...
@@ -26,6 +28,7 @@ class TodayForecastTimePeriodCell: UITableViewCell {
prepareCell
()
prepareSegmentedControl
()
prepareForecastTimePeriodView
()
prepareMinutelyForecastView
()
prepareDescriptionView
()
}
...
...
@@ -37,6 +40,7 @@ class TodayForecastTimePeriodCell: UITableViewCell {
public
func
configure
(
with
location
:
Location
)
{
self
.
location
=
location
self
.
forecastTimePeriodView
.
set
(
daily
:
location
.
daily
,
hourly
:
location
.
hourly
)
self
.
minutelyForecastView
.
configure
(
with
:
location
)
self
.
handleSegmentDidChange
()
}
...
...
@@ -45,8 +49,16 @@ class TodayForecastTimePeriodCell: UITableViewCell {
return
}
switch
timePeriod
{
case
.
daily
,
.
hourly
:
forecastTimePeriodView
.
isHidden
=
false
minutelyForecastView
.
isHidden
=
true
let
forecastType
=
timePeriod
==
.
daily
?
ForecastType
.
daily
:
ForecastType
.
hourly
self
.
forecastTimePeriodView
.
set
(
forecastType
:
forecastType
,
buttonType
:
ForecastPeriodButton
.
self
)
case
.
minutely
:
forecastTimePeriodView
.
isHidden
=
true
minutelyForecastView
.
isHidden
=
false
}
}
}
...
...
@@ -78,6 +90,18 @@ private extension TodayForecastTimePeriodCell {
}
}
func
prepareMinutelyForecastView
()
{
minutelyForecastView
.
isHidden
=
true
contentView
.
addSubview
(
minutelyForecastView
)
minutelyForecastView
.
snp
.
makeConstraints
{
(
make
)
in
make
.
left
.
equalToSuperview
()
make
.
right
.
equalToSuperview
()
make
.
top
.
equalTo
(
periodSegmentedControl
.
snp
.
bottom
)
.
offset
(
40
)
.
priority
(
.
medium
)
make
.
height
.
equalTo
(
240
)
}
}
func
prepareDescriptionView
()
{
//TODO: Hide the description for now
descriptionView
.
isHidden
=
true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment