• Stars
    star
    473
  • Rank 92,240 (Top 2 %)
  • Language
    Swift
  • Created almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎪 Rideau is a drawer UI similar to what Apple's apps use. (e.g Maps, Shortcuts) Supports multiple snap points

🎪 Rideau

Rideau is a drawer UI similar to what Apple's apps use. (e.g Maps, Shortcuts)

🚀 Rideau is in release candidate!

Overview

  • 💎 Supports multiple snap points (e.g. most hidden, half visible, full visible, and we can add more snap points.)
  • 💎 Supports Animations alongside moving (e.g. dimming background color)
  • 💎 Supports handling scrolling of scrollview inside RideauView
  • 💎 Supports resizing based on intrinsic content size of view that RideauView has
  • Interactive Animations come from UIViewPropertyAnimator, with this it's actual interruptible animation and no glitches. (it can't get from UIView.animate)

RideauView allows for flexible snap points. Snap points pertains to specified offsets where the draggable view "snaps to" when the dragging has ended. There are usually 2 or 3 snap points.


Objects we will commonly use:

  • RideauView
  • RideauViewController
  • RideauSnapPoint

RideauView is the core object in this library. We typically add our own view to RideauView.

RideauViewController contains a RideauView. It allows us to present the RideauView as modal dialog.

RideauSnapPoint defines where the content view stops.

🔶 Requirements

iOS 10.0+ Xcode 10.1+ Swift 4.2+

📱 Features

  • Multiple snap-point
  • Smooth integration with dragging and UIScrollView's scrolling.
  • Tracking UIScrollView automatically
  • Set UIScrollView to track manually
  • Use UIViewPropertyAnimator between snap-points.

👨🏻‍💻 Usage

Present inline

let rideauView = RideauView(frame: .zero) { (config) in
  config.snapPoints = [.autoPointsFromBottom, .fraction(0.6), .fraction(1)]
}
  
let someView = ...

rideauView.containerView.set(bodyView: container.view, options: .strechDependsVisibleArea)

Present with Modal Presentation

let targetViewController: YourViewController = ...

let controller = RideauViewController(
  bodyViewController: targetViewController,
  configuration: {
    var config = RideauView.Configuration()
    config.snapPoints = [.autoPointsFromBottom, .fraction(1)]
    return config
}(),
  initialSnapPoint: .autoPointsFromBottom
)

present(controller, animated: true, completion: nil)

Multiple SnapPoints

We can define snap-point with RideauSnapPoint.

public enum RideauSnapPoint : Hashable {
  
  case fraction(CGFloat)
  case pointsFromTop(CGFloat)
  case pointsFromBottom(CGFloat)
  case autoPointsFromBottom
}
config.snapPoints = [.pointsFromBottom(200), .fraction(0.5), .fraction(0.8), .fraction(1)]

⚙️ Details

RideauContainerView has two ways of resizing content view which is added.

  • RideauContainerView.ResizingOption
    • noResize
    • resizeToVisibleArea
final class RideauContainerView : UIView {
  public func set(bodyView: UIView, resizingOption: ResizingOption)
}

🔌 Components

Rideau provides the following components that may help us.

RideauMaskedCornerRoundedViewController

A Container view controller that implements masked rounded corner interface and has some options.

  • More customizable
let targetViewController: YourViewController = ...
let toDisplayViewController = RideauMaskedCornerRoundedViewController(viewController: targetViewController)

let controller = RideauViewController(
  bodyViewController: RideauMaskedCornerRoundedViewController(viewController: target),
  ...

RideauMaskedCornerRoundedView

  • More customizable

RideauThumbView

  • More customizable

Installation

CocoaPods

Rideau is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Rideau'

Carthage

For Carthage, add the following to your Cartfile:

github "muukii/Rideau"

What's using Rideau

Author

Contributors

SwiftUI Edition

https://github.com/nerdsupremacist/Snap

License

Rideau is released under the MIT license.

More Repositories

1

NextGrowingTextView

📝 The next in the generations of 'growing textviews' optimized for iOS 8 and above.
Swift
1,623
star
2

DataSources

💾 🔜📱 Type-safe data-driven CollectionView, TableView Framework. (We can also use ASCollectionNode)
Swift
556
star
3

StackScrollView

📋 iOS Form UI Builder in Swift (powered by UICollectionView)
Swift
402
star
4

JAYSON

🧱 A JSON decoding/encoding library that handles optimistically or strictly.
Swift
249
star
5

MondrianLayout

🏗 A way to build AutoLayout rapidly than using InterfaceBuilder(XIB, Storyboard) in iOS.
Swift
145
star
6

PrecisionLevelSlider

PrecisionLevelSlider
Swift
129
star
7

CPKenburnsView

CPKenburnsView is ken burns effect
Objective-C
105
star
8

ZoomImageView

UI component library to expand the photo, such as Apple's Photos app
Swift
97
star
9

LightRoom

Easy Chaining ImageFilter with CoreImage 📸
Swift
94
star
10

CPKenburnsSlideshowView

Inspired by Hey Day
Objective-C
69
star
11

Bulk

👨‍💻 Bulk is a library for buffering the objects. Pipeline(Sink) receives the object and emits the object bulked.
Swift
61
star
12

FluidInterfaceKit

🌧 A framework that provides the advanced infrastructure for your iPhone apps
Swift
53
star
13

TypedTextAttributes

🖍 The Library Creating Text Attributes with Type-Safety
Swift
49
star
14

ColorCube

Create CubeData for CIColorCube from LUT image.
Swift
30
star
15

OneStore

📕A single value proxy for NSUserDefaults, with clean API.
Swift
27
star
16

cocoapods-frost

📦 A plugin for CocoaPods that creates XCFramework(for internal distribution) for speeding up build time.
Ruby
25
star
17

jackhammer-syntax

Dark and Bright Syntax Theme
CSS
21
star
18

FluidPresentation

🍞 [Beta] A view controller that can unwind like presentation and navigation.
Swift
20
star
19

iOS7-Blur

Fast UIView Screenshot and BlurEffect
Objective-C
20
star
20

TextAttributesUtil

Quickly create NSAttributedString with TextAttributes
Swift
15
star
21

Presenter

Screen transition with safe and clean code.
Swift
14
star
22

Warehouse

Easy NSFileManager
Swift
13
star
23

MatchedTransition

[Used in Pairs] A primitive stuff to do transition
Swift
11
star
24

Bureau

An easy way to use input view to display custom-view on iOS UIKit
Swift
11
star
25

Drip.app

A photo editor app
Swift
11
star
26

chglog

🪵 A changelog generator that regarding pulls and specified commits.
TypeScript
10
star
27

BoxLayout

[WIP] SwiftUI's interface like AutoLayout DSL
Swift
10
star
28

Sample.UmbrellaFramework

Swift
10
star
29

ModernUpperNotificationView

ModernUpperNotificationView is simple notification view - powered by
Swift
10
star
30

Capturer

📸 A wrapper for AVCaptureSession - The way easier to use the Camera.
Swift
9
star
31

swiftui-GestureVelocity

In SwiftUI, a property-wrapper provides velocity in pt/s from gesture
Swift
9
star
32

MusicalScaleKit

Generate notes on Musical Scale
Swift
9
star
33

Grain

A data serialization template language in Swift
Swift
8
star
34

AutoresizingTableCollectionView

SampleCode Autoresizing Cells
Swift
7
star
35

ResultBuilderKit

Set of result builder
Swift
6
star
36

TextureBook

The sample codes using Texture.
Swift
6
star
37

CircleWaveAnimation-Playground

Swift
6
star
38

swiftui-WrapLayout

A custom layout built on top of SwiftUI's Layout API that lays elements out in multiple lines. Similar to flex-wrap in CSS, CollectionViewFlowLayout.
Swift
6
star
39

swiftui-AsyncMultiplexImage

Swift
5
star
40

RxFuture

🛸A library to provide Future/Promise pattern API that is backed by RxSwift.
Swift
5
star
41

ViewFinder

Find the UI Component by accessibilityIdentifier from AppDelegate.window
Swift
5
star
42

CompositionKit

A collection of components to build composed component
Swift
5
star
43

Bound

⛓The Bound is a library for building iOS view transitions using UIViewPropertyAnimator.
Swift
5
star
44

ConcurrencyContinuationReproduce

[FB11707587] **`withCheckedContinuation`'s body will run on background thread in case of starting from main-actor.**.
Swift
5
star
45

Lab.swift

Just my playground space for learning Swift
Swift
5
star
46

TransitionPatch

Declarative sequence for converting value.
Swift
4
star
47

Unwrap

let _self = try self.unwrapped()
Swift
4
star
48

ViewSizeCalculator

Calculate UIView size
Swift
4
star
49

YogaBasedLayout

[WIP] Mondrian provides the layout interface like TetureGroup/Texture with high-optimized layout engine facebook/yoga flexbox implementation.
Swift
4
star
50

L10n.swift

Generate Localizable.strings from yaml (Work in progress)
Swift
4
star
51

Realm-EasyBackground

C++
4
star
52

Try.Umbrella

Swift
4
star
53

Play.ThrowBox

Trial about UISpringTimingParameters with UIViewPropertyAnimator
Swift
3
star
54

ColorGen

Generate .clr file from json
Objective-C
3
star
55

Swift-binary-size

Swift
3
star
56

RxAssert

Check element in Stream
Swift
3
star
57

APNsClient

[WIP] A desktop application to send a apns push with HTTP/2 based API. (Using VergeStore, Redux Arch)
Swift
3
star
58

BalloonUI

Swift
3
star
59

UpperNotificationController

UpperNotificationController is core for appear notification to upper on app screen
Swift
3
star
60

iOS15-UIRefreshControl-issue-reproduction

Swift
2
star
61

PhotosPicker

Swift
2
star
62

Simctl

Desktop Application Control Xcode's Simulator
JavaScript
2
star
63

UpperNotificationView

UpperNotificaitonView
Objective-C
2
star
64

dotfiles

Python
2
star
65

actions-xcode-install-simulator

Installs simulator runtime for Xcode development
2
star
66

swagger-ejs

HTML
2
star
67

RealmSwiftSupport

WIP
Swift
2
star
68

MuukiiPhoto

Swift
2
star
69

cocoapods-xcframework

[Not working] Integrates pods in form of prebuilt xcframeworks conveniently, reducing compile time
Ruby
2
star
70

RequestKit

Swift
2
star
71

playground

Welcome to my yard.
Swift
2
star
72

PhotosProvider

Swift
2
star
73

Play.RunLoopWaiter

Swift
2
star
74

issue-texture-swiftui-preview

reproduction for texture on swiftui preview
Swift
1
star
75

Garage

Swift
1
star
76

GitCommand.swift

Git-Command builder for Swift
Swift
1
star
77

ModuleKit

Tool for resource loading on Swift iOS Module (NSBundle(forClass: self.dynamicType)
Swift
1
star
78

ios-project-template

Swift
1
star
79

Reveal2Loader

Objective-C
1
star
80

atom-fruits

CSS
1
star
81

MBlurPopImageVIew

Objective-C
1
star
82

InputFieldView

Swift
1
star
83

EmbeddedStringsKit

Swift
1
star
84

Descriptors

Swift
1
star
85

RunLoopWaiter

Swift
1
star
86

ApplicationMonitor

Monitor life-cycle : Application-UIKit.
Swift
1
star
87

electron-pusher

The Desktop Application Sending Apple Push Notification
JavaScript
1
star
88

GeometryKit

Calculating geometry in CoreGraphics
Swift
1
star
89

framework-swift-interfaces

1
star
90

actions-xcode-create-simulator

Creates an iOS Simulator specified version and device
1
star
91

PlayTexture

The catalog of UI that laid out with Texture
Swift
1
star
92

RxSwiftPractice

Swift
1
star
93

PortalView

Swift
1
star
94

Quartz-Composer

1
star
95

Lightroom-Presets

1
star
96

Atom-Neka-Syntax

CSS
1
star
97

FigJam-Schema

TypeScript
1
star
98

figma-JSONSchema

TypeScript
1
star
99

IgnoreNilAssignmentOperator

value =? nil // This does not insert
Swift
1
star
100

RxUnsplashSource

https://source.unsplash.com/
Swift
1
star