Starting from v1.3.0, WispConfiguration uses a DSL (Domain Specific Language) style configuration.
This approach groups related settings (animation, gesture, layout) into separate namespaces, making configuration more intuitive.
let configuration = WispConfiguration { config in
// Animation configuration
config.setAnimation { animation in
animation.speed = .fast
}
// Gesture configuration
config.setGesture { gesture in
gesture.allowedDirections = [.right, .down]
gesture.dismissByTap = false
}
// Layout configuration
config.setLayout { layout in
layout.presentedAreaInset = inset
layout.initialCornerRadius = 15
layout.finalCornerRadius = 30
}
}
enum (.slow, .normal, .fast)
config.setAnimation { animation in
animation.speed = .fast
}
config.setGesture { gesture in
gesture.allowedDirections = [.right, .down]
gesture.dismissByTap = false
}
config.setLayout { layout in
layout.presentedAreaInset = .zero
layout.initialCornerRadius = 15
layout.finalCornerRadius = 30
layout.initialMaskedCorner = [ .layerMaxXMaxYCorner, // ... ]
layout.finalMaskedCorner = [ .layerMaxXMaxYCorner, // ... ]
}
let config = WispConfiguration(
animationSpeed: .fast,
presentedAreaInset: .zero,
initialCornerRadius: 12,
finalCornerRadius: 20,
initialMaskedCorner: [.layerMaxXMaxYCorner],
finalMaskedCorner: [.layerMaxXMaxYCorner]
)
This API is deprecated and will be removed in future releases. When using deprecated APIs, you will see a compiler warning:
'init(animationSpeed:presentedAreaInset:initialCornerRadius:finalCornerRadius:initialMaskedCorner:finalMaskedCorner:)' is deprecated:
Use the new DSL-based configuration. For detailed usage, please refer to the Wisp GitHub README.