Skip to content

v3.0.0

Latest

Choose a tag to compare

@rursache rursache released this 18 Feb 16:10
938b79b

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
  • UIGlassEffect with UIVisualEffectView for 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

  • RSDropDownPicker wrapper with convenience modifiers: .glassStyle(), .classicStyle(), .searchEnabled()
  • Two-way Binding<Item?> for selection state

Grouped Configuration

  • All 30+ flat @IBInspectable properties replaced by a structured DropDownConfiguration with style, list, chevron, behavior, search, and animation groups
  • Chainable API: .rowHeight(56).searchEnabled(true).listMaxHeight(300)

Custom Item Types

  • DropDownItem protocol with dropDownTitle, dropDownImage, and dropDownID
  • String conforms by default — existing [String] arrays work without changes

Architecture

  • RSDropDownCell with proper UIListContentConfiguration cell reuse
  • RSDropDownTableManager extracts data source/delegate logic
  • RSDropDownAnimator extracts show/hide animation logic
  • RSDropDownDeprecations isolates 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
  • registerForTraitChanges for 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+