Skip to content

Commit b5091e9

Browse files
authored
Merge pull request #256 from Esri/des12437/Fix-visibility-in-dynamic-entity-layer-sample
[Update] Improve visibility of dynamic entities in sample
2 parents 157c3b7 + 977ca52 commit b5091e9

File tree

4 files changed

+55
-10
lines changed

4 files changed

+55
-10
lines changed

Shared/Samples/Add dynamic entity layer/AddDynamicEntityLayerView.SettingsView.swift

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,24 @@ extension AddDynamicEntityLayerView {
1919
/// The view model for the sample.
2020
@EnvironmentObject private var model: Model
2121

22+
/// The action to dismiss the settings sheet.
23+
@Environment(\.dismiss) private var dismiss: DismissAction
24+
2225
var body: some View {
23-
List {
26+
if #available(iOS 16, *) {
27+
NavigationStack {
28+
root
29+
}
30+
} else {
31+
NavigationView {
32+
root
33+
}
34+
.navigationViewStyle(.stack)
35+
}
36+
}
37+
38+
@ViewBuilder var root: some View {
39+
Form {
2440
Section("Track display properties") {
2541
Toggle("Track Lines", isOn: $model.showsTrackLine)
2642
Toggle("Previous Observations", isOn: $model.showsPreviousObservations)
@@ -47,6 +63,16 @@ extension AddDynamicEntityLayerView {
4763
}
4864
}
4965
}
66+
.toggleStyle(.switch)
67+
.navigationTitle("Dynamic Entity Settings")
68+
.navigationBarTitleDisplayMode(.inline)
69+
.toolbar {
70+
ToolbarItem(placement: .confirmationAction) {
71+
Button("Done") {
72+
dismiss()
73+
}
74+
}
75+
}
5076
}
5177
}
5278
}

Shared/Samples/Add dynamic entity layer/AddDynamicEntityLayerView.swift

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ struct AddDynamicEntityLayerView: View {
2020
@StateObject private var model = Model()
2121

2222
/// A Boolean value indicating whether the settings view should be presented.
23-
@State var isShowingSettings = false
23+
@State private var isShowingSettings = false
2424

2525
/// The initial viewpoint for the map.
26-
@State var viewpoint = Viewpoint(
26+
@State private var viewpoint = Viewpoint(
2727
center: Point(x: -12452361.486, y: 4949774.965),
2828
scale: 200_000
2929
)
@@ -48,13 +48,7 @@ struct AddDynamicEntityLayerView: View {
4848
}
4949
}
5050
Spacer()
51-
Button("Dynamic Entity Settings") {
52-
isShowingSettings = true
53-
}
54-
.sheet(isPresented: $isShowingSettings, detents: [.medium], dragIndicatorVisibility: .visible) {
55-
SettingsView()
56-
.environmentObject(model)
57-
}
51+
settingsButton
5852
}
5953
}
6054
.overlay(alignment: .top) {
@@ -75,4 +69,29 @@ struct AddDynamicEntityLayerView: View {
7569
}
7670
}
7771
}
72+
73+
@ViewBuilder private var settingsButton: some View {
74+
let button = Button("Dynamic Entity Settings") {
75+
isShowingSettings = true
76+
}
77+
let settingsView = SettingsView()
78+
.environmentObject(model)
79+
if #available(iOS 16, *) {
80+
button
81+
.popover(isPresented: $isShowingSettings, arrowEdge: .bottom) {
82+
settingsView
83+
.presentationDetents([.fraction(0.5)])
84+
#if targetEnvironment(macCatalyst)
85+
.frame(minWidth: 300, minHeight: 270)
86+
#else
87+
.frame(minWidth: 320, minHeight: 390)
88+
#endif
89+
}
90+
} else {
91+
button
92+
.sheet(isPresented: $isShowingSettings, detents: [.medium]) {
93+
settingsView
94+
}
95+
}
96+
}
7897
}
78 KB
Loading
105 KB
Loading

0 commit comments

Comments
 (0)