ISTimeline alternatives and similar libraries
Based on the "UI" category.
Alternatively, view ISTimeline alternatives based on common mentions on social networks and blogs.
-
Lottie
An iOS library to natively render After Effects vector animations -
iCarousel
A simple, highly customisable, data-driven 3D carousel for iOS and Mac OS -
IQKeyboardManager
Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. Neither need to write any code nor any setup required and much more. -
IGListKit
A data-driven UICollectionView framework for building fast and flexible lists. -
SVProgressHUD
A clean and lightweight progress HUD for your iOS and tvOS app. -
AsyncDisplayKit
Smooth asynchronous user interfaces for iOS apps. -
DZNEmptyDataSet
A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display -
SkeletonView
☠️ An elegant way to show users that something is happening and also prepare them to which contents they are awaiting -
FSCalendar
A fully customizable iOS calendar library, compatible with Objective-C and Swift -
folding-cell
:octocat: 📃 FoldingCell is an expanding content cell with animation made by @Ramotion -
animated-tab-bar
:octocat: RAMAnimatedTabBarController is a Swift UI module library for adding animation to iOS tabbar items and icons. iOS library made by @Ramotion -
NVActivityIndicatorView
A collection of awesome loading animations -
TTTAttributedLabel
A drop-in replacement for UILabel that supports attributes, data detectors, links, and more -
LTMorphingLabel
[EXPERIMENTAL] Graceful morphing effects for UILabel written in Swift. -
SWTableViewCell
An easy-to-use UITableViewCell subclass that implements a swippable content view which exposes utility buttons (similar to iOS 7 Mail Application) -
MGSwipeTableCell
An easy to use UITableViewCell subclass that allows to display swippable buttons with a variety of transitions. -
ViewAnimator
ViewAnimator brings your UI to life with just one line -
SwiftMessages
A very flexible message bar for iOS written in Swift. -
JTAppleCalendar
The Unofficial Apple iOS Swift Calendar View. Swift calendar Library. iOS calendar Control. 100% Customizable -
FSPagerView
FSPagerView is an elegant Screen Slide Library. It is extremely helpful for making Banner View、Product Show、Welcome/Guide Pages、Screen/ViewController Sliders. -
XLForm
XLForm is the most flexible and powerful iOS library to create dynamic table-view forms. Fully compatible with Swift & Obj-C. -
TPKeyboardAvoiding
A drop-in universal solution for moving text fields out of the way of the keyboard in iOS -
JVFloatLabeledTextField
UITextField subclass with floating labels - inspired by Matt D. Smith's design: http://dribbble.com/shots/1254439--GIF-Mobile-Form-Interaction?list=users -
SVPullToRefresh
Give pull-to-refresh & infinite scrolling to any UIScrollView with 1 line of code. -
SwipeCellKit
Swipeable UITableViewCell/UICollectionViewCell based on the stock Mail.app, implemented in Swift. -
PageMenu
A paging menu controller built from other view controllers placed inside a scroll view (like Spotify, Windows Phone, Instagram) -
AMScrollingNavbar
Scrollable UINavigationBar that follows the scrolling of a UIScrollView -
Koloda
KolodaView is a class designed to simplify the implementation of Tinder like cards on iOS. -
Alerts & Pickers
Advanced usage of UIAlertController and pickers based on it: Telegram, Contacts, Location, PhotoLibrary, Country, Phone Code, Currency, Date... -
expanding-collection
:octocat: ExpandingCollection is an animated material design UI card peek/pop controller. iOS library made by @Ramotion -
SCLAlertView-Swift
Beautiful animated Alert View. Written in Swift -
TextFieldEffects
Custom UITextFields effects inspired by Codrops, built using Swift -
SwiftEntryKit
SwiftEntryKit is a presentation library for iOS. It can be used to easily display overlays within your iOS apps. -
ViewDeck
An implementation of the sliding menu found in various iOS apps. -
Macaw
Powerful and easy-to-use vector graphics Swift library with SVG support -
SWRevealViewController
A UIViewController subclass for presenting side view controllers inspired on the FaceBook and Wunderlist apps, done right ! -
Material Components
[In maintenance mode] Modular and customizable Material Design UI components for iOS -
SideMenu
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less. -
TSMessages
💌 Easy to use and customizable messages/notifications for iOS à la Tweetbot
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 ISTimeline or a related project?
README
ISTimeline
ISTimeline is a simple timeline view written in Swift 3
Requirements
- iOS 8.0 or higher
- Swift 3
Installation
CocoaPods
ISTimeline is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ISTimeline'
Carthage
ISTimeline is also available through Carthage. Include the following line into your Cartfile and follow the instructions under getting started:
github "instant-solutions/ISTimeline"
Manually
Just drop the files ISPoint.swift and ISTimeline.swift into your project.
Usage
Import
import ISTimeline
Integration
We recommend to use the timeline view in your storyboard. Just add a plain view and set the custom class and the module property to ISTimeline
.
Or add the view programmatically:
let frame = CGRect(x: 0.0, y: 20.0, width: 300.0, height: 400.0)
let timeline = ISTimeline(frame: frame)
timeline.backgroundColor = .white
self.view.addSubview(timeline)
ISPoint
Each bubble is represented by an ISPoint object in the points array. ISPoints has several properties:
var title:String
shown in the bubble
var description:String?
shown below the bubble
var pointColor:UIColor
the color of each point in the line
var lineColor:UIColor
the color of the line after a point
var touchUpInside:Optional<(_ point:ISPoint) -> Void>
a callback, which is triggered after a touch inside a bubble
var fill:Bool
fills the point in the line (default: false
)
Example point:
let point = ISPoint(title: "my title")
point.description = "my awesome description"
point.lineColor = .red
point.fill = true
Initializers
The designated initializer is:
ISPoint(title:String, description:String, pointColor:UIColor, lineColor:UIColor, touchUpInside:Optional<(_ point:ISPoint) -> Void>, fill:Bool)
You also can use one the convenience initializers:
ISPoint(title:String, description:String, touchUpInside:Optional<(_ point:ISPoint) -> Void>)
ISPoint(title:String, touchUpInside:Optional<(_ point:ISPoint) -> Void>)
Or even this one:
ISPoint(title:String)
Touch events
To get touch events you just have to set a callback closure to the property point.touchUpInside
. It is triggered after a touch up inside a bubble.
point.touchUpInside =
{ (point:ISPoint) in
// do something
}
Add points to the timeline
To add points to the timeline you can simple create and set your points array to the property timeline.points
or you can append each point one after the other.
let myPoints = [
ISPoint(title: "first"),
ISPoint(title: "second"),
ISPoint(title: "third")
]
timeline.points = myPoints
Append a single point:
timeline.points.append(ISPoint(title: "fourth"))
Colors
You can customize the following timeline colors:
var bubbleColor:UIColor
color of every bubble (default .init(red: 0.75, green: 0.75, blue: 0.75, alpha: 1.0)
)
var titleColor:UIColor
color of the title in the bubble (default .white
)
var descriptionColor:UIColor
color the description text (default .gray
)
Points can be colored as described above.
Line width and point radius
Some common parameters can be adjusted:
var pointDiameter:CGFloat
diameter of a point in the line (default 6.0
)
var lineWidth:CGFloat
the thickness of the line (default 2.0
)
var bubbleRadius:CGFloat
the radius of the bubble corners (default 2.0
)
Bubble arrows
With the flag var bubbleArrows:Bool
it is possible to remove all arrows (default true
).
With arrows:
And without arrows:
Intents
You can add some padding by setting the content insets. This currently can only be done programmatically.
timeline.contentInset = UIEdgeInsetsMake(20.0, 20.0, 20.0, 20.0)
Clip subviews
Per default, the timeline clips all subviews to its bounds. If you would like to change this behavior just set it to false
.
timeline.clipsToBounds = false
Working example
let frame = CGRect(x: 0.0, y: 20.0, width: 300.0, height: 400.0)
let timeline = ISTimeline(frame: frame)
timeline.backgroundColor = .white
timeline.bubbleColor = .init(red: 0.95, green: 0.95, blue: 0.95, alpha: 1.0)
timeline.titleColor = .black
timeline.descriptionColor = .darkText
timeline.pointDiameter = 7.0
timeline.lineWidth = 2.0
timeline.bubbleRadius = 0.0
self.view.addSubview(timeline)
for i in 0...9 {
let point = ISPoint(title: "point \(i)")
point.description = "my awesome description"
point.lineColor = i % 2 == 0 ? .red : .green
point.pointColor = point.lineColor
point.touchUpInside =
{ (point:ISPoint) in
print(point.title)
}
timeline.points.append(point)
}
Demo
ISTimelineDemo is a simple demo app which shows the usage of ISTimeline in a storyboard.
TODOs
- [ ] show images in the timeline
- [ ] animate the appending and removing of an entry
License
ISTimeline is licensed under the terms of the Apache License 2.0. See the LICENSE file for more info.
Contribution
Feel free to fork the project and send us a pull-request! :sunglasses:
Author
Made with ❤️ in Austria by instant:solutions
*Note that all licence references and agreements mentioned in the ISTimeline README section above
are relevant to that project's source code only.