DynamicButton alternatives and similar libraries
Based on the "Button" category.
Alternatively, view DynamicButton alternatives based on common mentions on social networks and blogs.
-
LiquidFloatingActionButton
Material Design Floating Action Button in liquid state -
DOFavoriteButton
Cute Animated Button written in Swift. -
VBFPopFlatButton
Flat button with 9 different states using POP -
LGButton
A fully customisable subclass of the native UIControl which allows you to create beautiful buttons without writing any line of code. -
KCFloatingActionButton
:heart: Floating Action Button for iOS -
TransitionButton
UIButton sublass for loading and transition animation. -
WCLShineButton
This is a UI lib for iOS. Effects like shining. -
ZFRippleButton
Custom UIButton effect inspired by Google Material Design -
TVButton
Recreating the cool parallax icons from Apple TV as iOS UIButtons (in Swift). -
HTPressableButton
Flat design pressable button for iOS developers. -
FloatingButton
Easily customizable floating button menu created with SwiftUI -
PMSuperButton
🔥 PMSuperButton is a powerful UIButton coming from the countryside, but with super powers! 😎 -
gbkui-button-progress-view
Inspired by Apple’s download progress buttons in the app store -
ButtonProgressBar-iOS
A small and flexible (well documented) UIButton subclass with animated loading progress, and completion animation. -
TORoundedButton
A high-performance button control with rounded corners for iOS. -
NFDownloadButton
Revamped Download Button. It's kinda a reverse engineering of Netflix's app download button. -
VCFloatingActionButton
A Floating Action Button just like Google inbox for iOS -
JOEmojiableBtn
Since Facebook introduced reactions in 2016, it became a standard in several applications as a way for users to interact with content. ReactionButton is a control that allows developers to add this functionality to their apps in an easy way. -
EasySocialButton
An easy way to create beautiful social authentication buttons -
FlowBarButtonItem
Bar Button Item that can be moved anywhere in the screen, like Android's stickers button. -
JTFadingInfoView
UIButton-based view with fade in/out animation features -
ProgressButton
Custom button class that displays a progress bar around it to gauge -
ExpandableButton
Customizable and easy to use expandable button in Swift. -
DesignableButton
A Custom UIButton with Centralised Styling and common styles available in Interface Builder -
EMEmojiableBtn
Option selector that works similar to Reactions by fb. Objective-c version -
MultiToggleButton
Multiple state tap-to-toggle UIButton (like old camera flash button) -
AnimatablePlayButton
Animated Play and Pause Button written in Swift, using CALayer, CAKeyframeAnimation. -
WYMaterialButton
Interactive and fully animated Material Design button for iOS developers. -
SDevBootstrapButton
Twitter Bootstrap buttons for Swift -
JSButton
A fully customisable swift subclass on UIButton which allows you to create beautiful buttons without writing any line of code.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of DynamicButton or a related project?
README
DynamicButton is a powerful flat design button written in Swift to display hamburger button like with animated transitions between style updates. It also allows you to create your own custom symbol / style buttons!
Requirements • Usage • Installation • Contribution • Contact • License
Requirements
- iOS 8.0+ / tvOS 9.0+
- Xcode 10.0+
- Swift 5+
Usage
Basics
Here is how to create a button and setting its style:
import DynamicButton
let dynamicButton = DynamicButton(style: .hamburger)
// Equivalent to
// let dynamicButton = DynamicButton()
// dynamicButton.style = .hamburger
// Animate the style update
dynamicButton.setStyle(.close, animated: true)
Customization
Button appearance and behavior can be customized using different properties:
let dynamicButton = DynamicButton()
dynamicButton.lineWidth = 3
dynamicButton.strokeColor = .black
dynamicButton.highlightStokeColor = .gray
Supported Symbol Styles
Here is the symbol list (DynamicButton.Style
) already implemented by the library:
.arrowDown
: downwards arrow↓
.arrowLeft
: leftwards arrow←
.arrowRight
: rightwards arrow→
.arrowUp
: upwards arrow↑
.caretDown
: down caret⌄
.caretLeft
: left caret‹
.caretRight
: left caret›
.caretUp
: up caret:⌃
.checkMark
: check mark✓
.circleClose
: close symbol surrounded by a circle.circlePlus
: plus symbol surrounded by a circle.close
: close symbolX
.dot
: dot symbol.
.download
: downwards triangle-headed arrow to bar⤓
.fastForward
: fast forward≫
.hamburger
: hamburger button≡
.horizontalLine
: horizontal line―
.horizontalMoreOptions
: horizontal more options…
.none
: no style.pause
: pause symbol‖
.play
: play symbol►
.plus
: plus symbol+
.stop
: stop symbol◼
.reload
: reload symbol↻
.rewind
: rewind≪
.verticalLine
: vertical line|
.verticalMoreOptions
: vertical more options⋮
.location
: location symbol
Custom symbols
To create your own symbols you have to create an object (or struct) that conforms to the DynamicButtonBuildableStyle
protocol:
/// Diagonal line style: \
struct MyCustomLine: DynamicButtonBuildableStyle {
let pathVector: DynamicButtonPathVector
init(center: CGPoint, size: CGFloat, offset: CGPoint, lineWidth: CGFloat) {
let r = size / 2
let c = cos(CGFloat.pi * 0.3)
let s = sin(CGFloat.pi * 0.3)
let p1 = CGMutablePath()
p1.move(to: CGPoint(x: center.x + r * c, y: center.y + r * s))
p1.addLine(to: CGPoint(x: center.x - r * c, y: center.y - r * s))
pathVector = DynamicButtonPathVector(p1: p1, p2: p1, p3: p1, p4: p1)
}
/// "MyCustomLine" style.
static var styleName: String {
return "MyCustomLine"
}
}
myButton.style = .custom(MyCustomLine.self)
Note that a symbol can not have more than 4 paths.
And many more...
To go further, take a look at the example project.
Installation
CocoaPods
Install CocoaPods if not already available:
$ [sudo] gem install cocoapods
$ pod setup
Go to the directory of your Xcode project, and Create and Edit your Podfile and add DynamicButton:
$ cd /path/to/MyProject
$ touch Podfile
$ edit Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'DynamicButton', '~> 6.2.1'
Install into your project:
$ pod install
Open your project in Xcode from the .xcworkspace file (not the usual project file):
$ open MyProject.xcworkspace
You can now import DynamicButton
framework into your files.
Carthage
Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate DynamicButton
into your Xcode project using Carthage, specify it in your Cartfile
file:
github "yannickl/DynamicButton" >= 6.2.1
Swift Package Manager
You can use The Swift Package Manager to install DynamicButton
by adding the proper description to your Package.swift
file:
import PackageDescription
let package = Package(
name: "YOUR_PROJECT_NAME",
dependencies: [
.package(url: "https://github.com/yannickl/DynamicButton.git", from: "6.2.1")
],
// ...
)
Note that the Swift Package Manager is still in early design and development, for more information checkout its GitHub Page.
Manually
Download the project and copy the DynamicButton
folder into your project to use it in.
Contribution
Contributions are welcomed and encouraged ♡.
Contact
Yannick Loriot
License (MIT)
Copyright (c) 2015-present - Yannick Loriot
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*Note that all licence references and agreements mentioned in the DynamicButton README section above
are relevant to that project's source code only.