@@ -17,10 +17,34 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
17
17
}
18
18
}
19
19
20
- @IBOutlet weak var stackView : UIStackView !
21
- @IBOutlet weak var segmentedControlContainerView : UIView !
22
- @IBOutlet weak var segmentedControl : UISegmentedControl !
23
- @IBOutlet weak var containerView : UIView !
20
+ private lazy var stackView : UIStackView = {
21
+ let stackView = UIStackView ( )
22
+ stackView. translatesAutoresizingMaskIntoConstraints = false
23
+ stackView. axis = . vertical
24
+ stackView. alignment = . fill
25
+ stackView. distribution = . fill
26
+ stackView. spacing = 0
27
+ return stackView
28
+ } ( )
29
+
30
+ private lazy var segmentedControlContainerView : UIView = {
31
+ let view = UIView ( )
32
+ view. translatesAutoresizingMaskIntoConstraints = false
33
+ view. backgroundColor = . basicBackground
34
+ return view
35
+ } ( )
36
+
37
+ private lazy var segmentedControl : UISegmentedControl = {
38
+ let segmentedControl = UISegmentedControl ( )
39
+ segmentedControl. translatesAutoresizingMaskIntoConstraints = false
40
+ return segmentedControl
41
+ } ( )
42
+
43
+ private lazy var containerView : UIView = {
44
+ let view = UIView ( )
45
+ view. translatesAutoresizingMaskIntoConstraints = false
46
+ return view
47
+ } ( )
24
48
25
49
private let meScenePresenter : ScenePresenter
26
50
private let blogService : BlogService
@@ -75,6 +99,7 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
75
99
// MARK: - View Lifecycle
76
100
77
101
override func viewDidLoad( ) {
102
+ setupConstraints ( )
78
103
setupNavigationItem ( )
79
104
setupSegmentedControl ( )
80
105
subscribeToPostSignupNotifications ( )
@@ -136,6 +161,37 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
136
161
segmentedControl. selectedSegmentIndex = 0
137
162
}
138
163
164
+ /// If the My Site Dashboard feature flag is enabled, then this method builds a layout with the following
165
+ /// view hierarchy:
166
+ ///
167
+ /// - Stack view
168
+ /// - Segmented control container view
169
+ /// - Segmented control
170
+ /// - Container view (for a child vc)
171
+ ///
172
+ /// Otherwise, if the My Site Dashboard feature flag is disabled, this method does nothing and the
173
+ /// child vc get added directly to the root view of the view controller in showBlogDetails.
174
+ ///
175
+ private func setupConstraints( ) {
176
+ guard FeatureFlag . mySiteDashboard. enabled else {
177
+ return
178
+ }
179
+
180
+ view. addSubview ( stackView)
181
+ segmentedControlContainerView. addSubview ( segmentedControl)
182
+ stackView. addArrangedSubviews ( [ segmentedControlContainerView, containerView] )
183
+
184
+ NSLayoutConstraint . activate ( [
185
+ stackView. leadingAnchor. constraint ( equalTo: view. leadingAnchor) ,
186
+ stackView. trailingAnchor. constraint ( equalTo: view. trailingAnchor) ,
187
+ stackView. topAnchor. constraint ( equalTo: view. safeAreaLayoutGuide. topAnchor) ,
188
+ stackView. bottomAnchor. constraint ( equalTo: view. safeAreaLayoutGuide. bottomAnchor) ,
189
+ segmentedControl. centerXAnchor. constraint ( equalTo: segmentedControlContainerView. centerXAnchor) ,
190
+ segmentedControl. centerYAnchor. constraint ( equalTo: segmentedControlContainerView. centerYAnchor) ,
191
+ segmentedControl. topAnchor. constraint ( equalTo: segmentedControlContainerView. topAnchor, constant: 24 )
192
+ ] )
193
+ }
194
+
139
195
// MARK: - Navigation Item
140
196
141
197
/// In iPad and iOS 14, the large-title bar is collapsed when the VC is first loaded. Call this method from
@@ -435,7 +491,13 @@ class MySiteViewController: UIViewController, NoResultsViewHost {
435
491
436
492
addMeButtonToNavigationBar ( email: blog. account? . email, meScenePresenter: meScenePresenter)
437
493
438
- embedChildInContainerView ( blogDetailsViewController)
494
+ if FeatureFlag . mySiteDashboard. enabled {
495
+ embedChildInContainerView ( blogDetailsViewController)
496
+ } else {
497
+ add ( blogDetailsViewController)
498
+ blogDetailsViewController. view. translatesAutoresizingMaskIntoConstraints = false
499
+ view. pinSubviewToAllEdges ( blogDetailsViewController. view)
500
+ }
439
501
440
502
blogDetailsViewController. showInitialDetailsForBlog ( )
441
503
}
0 commit comments