@@ -205,10 +205,9 @@ public struct Split<P: View, D: View, S: View>: View {
205
205
private func isDraggable( ) -> Bool {
206
206
guard hide. side != nil || minPFraction != nil || minSFraction != nil else { return true }
207
207
guard let side = hide. side else { return true }
208
- switch side {
209
- case . primary:
208
+ if side. isPrimary {
210
209
return minPFraction == nil
211
- case . secondary :
210
+ } else {
212
211
return minSFraction == nil
213
212
}
214
213
}
@@ -250,7 +249,7 @@ public struct Split<P: View, D: View, S: View>: View {
250
249
251
250
/// Return a new Split with the `splitter` set to a new type.
252
251
///
253
- /// If the splitter is a SplitDivider, get its `visibleThickness` and set that in `styling` before returning.
252
+ /// If the splitter is a SplitDivider, then get its `visibleThickness` and set it in `styling` before returning.
254
253
public func splitter< T> ( @ViewBuilder _ splitter: @escaping ( ) -> T ) -> Split < P , T , S > where T: View {
255
254
let newSplitter = splitter ( )
256
255
if let splitDivider = newSplitter as? ( any SplitDivider ) {
@@ -259,82 +258,94 @@ public struct Split<P: View, D: View, S: View>: View {
259
258
return Split < P , T , S > ( layout, fraction: fraction, hide: hide, styling: styling, constraints: constraints, primary: { primary } , splitter: splitter, secondary: { secondary } )
260
259
}
261
260
261
+ /// Return a new instance of Split with `constraints` set to a SplitConstraints holding these values.
262
262
public func constraints( minPFraction: CGFloat ? = nil , minSFraction: CGFloat ? = nil , priority: SplitSide ? = nil ) -> Split {
263
263
let constraints = SplitConstraints ( minPFraction: minPFraction, minSFraction: minSFraction, priority: priority)
264
264
return Split ( layout, fraction: fraction, hide: hide, styling: styling, constraints: constraints, primary: { primary } , splitter: { splitter } , secondary: { secondary } )
265
265
}
266
266
267
+ /// Return a new instance of Split with `constraints` set to this SplitConstraints.
268
+ ///
269
+ /// This is a convenience method for HSplit and VSplit.
267
270
public func constraints( _ constraints: SplitConstraints ) -> Split {
268
271
self . constraints ( minPFraction: constraints. minPFraction, minSFraction: constraints. minSFraction, priority: constraints. priority)
269
272
}
270
273
274
+ /// Return a new instance of Split with `styling` set to a SplitStyling holding these values.
275
+ ///
276
+ /// This is a convenience method for `Splitter.line()` which is also used by `Splitter.invisible()`.
271
277
public func styling( color: Color ? = nil , inset: CGFloat ? = nil , visibleThickness: CGFloat ? = nil , invisibleThickness: CGFloat ? = nil ) -> Split {
272
278
let styling = SplitStyling ( color: color, inset: inset, visibleThickness: visibleThickness, invisibleThickness: invisibleThickness)
273
279
return Split ( layout, fraction: fraction, hide: hide, styling: styling, constraints: constraints, primary: { primary } , splitter: { splitter } , secondary: { secondary } )
274
280
}
275
281
282
+ /// Return a new instance of Split with `styling` set to this SplitStyling.
283
+ ///
284
+ /// This is a convenience method for HSplit and VSplit.
276
285
public func styling( _ styling: SplitStyling ) -> Split {
277
286
self . styling ( color: styling. color, inset: styling. inset, visibleThickness: styling. visibleThickness, invisibleThickness: styling. invisibleThickness)
278
287
}
279
288
280
- /// Return a new instance of Split with `layout` set to this LayoutHolder
289
+ /// Return a new instance of Split with `layout` set to this LayoutHolder.
290
+ ///
291
+ /// Split only supports `layout` specified using a LayoutHolder because if you are not going
292
+ /// to change the `layout`, then you should just use HSplit or VSplit.
281
293
public func layout( _ layout: LayoutHolder ) -> Split {
282
294
Split ( layout, fraction: fraction, hide: hide, styling: styling, constraints: constraints, primary: { primary } , splitter: { splitter } , secondary: { secondary } )
283
295
}
284
296
285
- /// Return a new instance of Split with `layout` set to a LayoutHolder holding onto this SplitLayout
286
- public func layout( _ layout: SplitLayout ) -> Split {
287
- self . layout ( LayoutHolder ( layout) )
288
- }
289
-
290
- /// Return a new instance of Split with `fraction` set to this FractionHolder
297
+ /// Return a new instance of Split with `fraction` set to this FractionHolder.
291
298
public func fraction( _ fraction: FractionHolder ) -> Split {
292
299
Split ( layout, fraction: fraction, hide: hide, styling: styling, constraints: constraints, primary: { primary } , splitter: { splitter } , secondary: { secondary } )
293
300
}
294
301
295
- /// Return a new instance of Split with `fraction` set to a FractionHolder holding onto this CGFloat
302
+ /// Return a new instance of Split with `fraction` set to a FractionHolder holding onto this CGFloat.
296
303
public func fraction( _ fraction: CGFloat ) -> Split {
297
304
self . fraction ( FractionHolder ( fraction) )
298
305
}
299
306
300
- /// Return a new instance of Split with `hide` set to this SideHolder
307
+ /// Return a new instance of Split with `hide` set to this SideHolder.
301
308
public func hide( _ side: SideHolder ) -> Split {
302
309
Split ( layout, fraction: fraction, hide: side, styling: styling, constraints: constraints, primary: { primary } , splitter: { splitter } , secondary: { secondary } )
303
310
}
304
311
305
- /// Return a new instance of Split with `hide` set to a SideHolder holding onto this SplitSide
312
+ /// Return a new instance of Split with `hide` set to a SideHolder holding onto this SplitSide.
306
313
public func hide( _ side: SplitSide ) -> Split {
307
314
self . hide ( SideHolder ( side) )
308
315
}
309
316
310
317
}
311
318
312
- //struct Split_Previews: PreviewProvider {
313
- // static var previews: some View {
314
- // Split(.horizontal,
315
- // fraction: FractionHolder(0.75),
316
- // primary: { Color.red },
317
- // splitter: { Splitter.horizontal },
318
- // secondary: {
319
- // Split(.vertical,
320
- // primary: { Color.blue },
321
- // splitter: { Splitter.vertical },
322
- // secondary: {
323
- // Split(.vertical,
324
- // primary: { Color.green },
325
- // splitter: { Splitter.vertical },
326
- // secondary: { Color.yellow }
327
- // )
328
- // }
329
- // )
330
- // }
331
- // )
332
- // .frame(width: 400, height: 400)
333
- // Split(.horizontal,
334
- // primary: { Split(.vertical, primary: { Color.red }, splitter: { Splitter.vertical }, secondary: { Color.green }) },
335
- // splitter: { Splitter.horizontal },
336
- // secondary: { Split(.horizontal, primary: { Color.blue }, splitter: { Splitter.horizontal }, secondary: { Color.yellow }) }
337
- // )
338
- // .frame(width: 400, height: 400)
339
- // }
340
- //}
319
+ struct Split_Previews : PreviewProvider {
320
+ static var previews : some View {
321
+ Split (
322
+ primary: { Color . green } ,
323
+ secondary: {
324
+ Split (
325
+ primary: { Color . red } ,
326
+ secondary: {
327
+ Split (
328
+ primary: { Color . blue } ,
329
+ secondary: { Color . yellow }
330
+ )
331
+ . layout ( LayoutHolder ( . horizontal) )
332
+ }
333
+ )
334
+ . layout ( LayoutHolder ( . vertical) )
335
+ }
336
+ )
337
+ . layout ( LayoutHolder ( . horizontal) )
338
+
339
+ Split (
340
+ primary: {
341
+ Split ( primary: { Color . red } , secondary: { Color . green } )
342
+ . layout ( LayoutHolder ( . vertical) )
343
+ } ,
344
+ secondary: {
345
+ Split ( primary: { Color . yellow } , secondary: { Color . blue } )
346
+ . layout ( LayoutHolder ( . vertical) )
347
+ }
348
+ )
349
+ . layout ( LayoutHolder ( . horizontal) )
350
+ }
351
+ }
0 commit comments