mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-03-25 08:55:46 +00:00
Merge 8f332a724e into 1a0d3353b9
This commit is contained in:
commit
170ee7ce3a
2 changed files with 46 additions and 10 deletions
|
|
@ -6,17 +6,8 @@ import Version
|
|||
|
||||
struct InfoPane: View {
|
||||
let xcode: Xcode
|
||||
var body: some View {
|
||||
if #available(macOS 14.0, *) {
|
||||
mainContent
|
||||
.contentMargins(10, for: .scrollContent)
|
||||
} else {
|
||||
mainContent
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
|
||||
private var mainContent: some View {
|
||||
var body: some View {
|
||||
ScrollView(.vertical) {
|
||||
HStack(alignment: .top) {
|
||||
VStack {
|
||||
|
|
@ -47,6 +38,7 @@ struct InfoPane: View {
|
|||
|
||||
}
|
||||
}
|
||||
.contentPadding(10)
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
|
|
|
|||
44
Xcodes/Frontend/View+ContentPadding.swift
Normal file
44
Xcodes/Frontend/View+ContentPadding.swift
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import SwiftUI
|
||||
|
||||
extension View {
|
||||
@ViewBuilder
|
||||
/// Adds an equal padding amount to specific edges of this view without clipping scrollable views.
|
||||
/// - parameters:
|
||||
/// - edges: Edges to add paddings
|
||||
/// - length: The amount of padding to be added to edges.
|
||||
/// - Returns: A view that’s padded by the specified amount on specified edges.
|
||||
///
|
||||
/// This modifier uses safe area as paddings, making both non-scrollable and scrollable content looks great in any context.
|
||||
public func contentPadding(_ edges: Edge.Set = .all, _ length: CGFloat? = nil) -> some View {
|
||||
if #available(macOS 14.0, *) {
|
||||
safeAreaPadding(edges, length)
|
||||
} else {
|
||||
safeAreaInset(edge: .top) {
|
||||
EmptyView().frame(width: 0, height: 0)
|
||||
.padding(.top, edges.contains(.top) ? length : 0)
|
||||
}
|
||||
.safeAreaInset(edge: .bottom) {
|
||||
EmptyView().frame(width: 0, height: 0)
|
||||
.padding(.bottom, edges.contains(.bottom) ? length : 0)
|
||||
}
|
||||
.safeAreaInset(edge: .leading) {
|
||||
EmptyView().frame(width: 0, height: 0)
|
||||
.padding(.leading, edges.contains(.leading) ? length : 0)
|
||||
}
|
||||
.safeAreaInset(edge: .trailing) {
|
||||
EmptyView().frame(width: 0, height: 0)
|
||||
.padding(.trailing, edges.contains(.trailing) ? length : 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds an equal padding amount to all edges of this view without clipping scrollable views.
|
||||
/// - parameters:
|
||||
/// - length: The amount of padding to be added to edges.
|
||||
/// - Returns: A view that’s padded by the specified amount on all edges.
|
||||
///
|
||||
/// This modifier uses safe area as paddings, making both non-scrollable and scrollable content looks great in any context.
|
||||
public func contentPadding(_ length: CGFloat) -> some View {
|
||||
contentPadding(.all, length)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue