Repository navigation
RSDropDown v3.0.0
Complete rewrite with a modern, Apple-native architecture.
Highlights
Liquid Glass Style (Default)
- Native SwiftUI
.glassEffect()on iOS 26+ for full Liquid Glass rendering with reflections, refractions, and lighting UIGlassEffectwithUIVisualEffectViewfor standalone UIKit usage- Translucent blur fallback on earlier iOS versions
- Subtle hairline borders and shadows for definition against any background
Classic Apple Style
- Opaque backgrounds, borders, shadows, and separators
- Apply with
dropDown.configuration = .classic()(UIKit) or.classicStyle()(SwiftUI)
SwiftUI Support
RSDropDownPickerwrapper with convenience modifiers:.glassStyle(),.classicStyle(),.searchEnabled()- Two-way
Binding<Item?>for selection state
Grouped Configuration
- All 30+ flat
@IBInspectableproperties replaced by a structuredDropDownConfigurationwithstyle,list,chevron,behavior,search, andanimationgroups - Chainable API:
.rowHeight(56).searchEnabled(true).listMaxHeight(300)
Custom Item Types
DropDownItemprotocol withdropDownTitle,dropDownImage, anddropDownIDStringconforms by default — existing[String]arrays work without changes
Architecture
RSDropDownCellwith properUIListContentConfigurationcell reuseRSDropDownTableManagerextracts data source/delegate logicRSDropDownAnimatorextracts show/hide animation logicRSDropDownDeprecationsisolates all v2 backward-compatible shims
Other Improvements
- Swift 6 strict concurrency compliance (zero warnings)
- Dynamic Type support with
UIFont.preferredFont(forTextStyle:)defaults - Accessibility: button traits, layout change announcements, descriptive hints
- Haptic feedback on selection via
UISelectionFeedbackGenerator - Reduce Motion support (simple crossfade instead of spring animations)
- Continuous corner curves (
layer.cornerCurve = .continuous) on all rounded elements registerForTraitChangesfor dark/light mode border color updates (iOS 17+)- Interactive demo with Xcode Canvas previews in
Sources/Demo/DemoView.swift
Migration from v2
All v2 properties and methods are preserved with @available(*, deprecated) annotations. Existing code compiles with deprecation warnings only — no errors. See the migration table in the README for the full mapping.
Requirements
- iOS 17+
- Swift 6.1+
- Xcode 26+