Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork220
freshOS/Stevia
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Winner of Hacking with Swift Recommended award
- 💡 Writeconcise,readable layouts
- 🏖Reduce yourmaintenance time
- 🎨Compose your styles,CSS-like
- 🔴 PlugLive reload andboost your iteration cycles
Reason -Example -Live Reload -Installation -Documentation
layout{100|-email-|~8010%|-password-forgot-|~80>=20 |login|~800}
email.top(100).left(8).right(8).width(200).height(44)alignHorizontally(password, forgot)image.fillContainer()button.centerInContainer().size(50%)equalWidths(email, password)image.width(>=80)
email.Top==100password.CenterY== forgot.CenterYlogin.Top>= password.Bottom+20login.Width==75% Width(image.Height==100).priority=UILayoutPriority(rawValue:999)
All Generatenative NSLayoutConstraints 🎉
Stevia is part offreshOS iOS toolset. Try it in an example App !Download Starter Project
Becausenothing holds more truth than pure code 🤓
Xibs and storyboards areheavy, hard to maintain, hard to merge.
They split the view concept into 2 separate files making debugging anightmare
There must be a better way
By creating a tool that makes Auto layout code finallyreadable by a human being.
By coupling it with live code injection such asinjectionForXcode we candesign views in real time
View layout becomesfun,concise,maintainable and dare I say,beautiful ❤️
In the project folder, you can find an example of a typical login view laid out in both native and Stevia for you to understand and compare the two approaches.
As a spoiler alert, thenumber of characters goes from 2380 to 1239( ~ divided by 2)
WriteHalf the code that is actually10X more expressive and maintainable !
Live reload enables you to develop your views live without relaunching the app everytime.
Stevia +InjectionForXcode = #WhoNeedsReactNative?? 🚀
JustCmd+S and you can dev live in the simulator !
Learn more about how to set up live reloadhere.
Stevia is installed via the officialSwift Package Manager.
SelectXcode>File>Swift Packages>Add Package Dependency...
and addhttps://github.com/freshOS/Stevia.
The Swift Package Manager (SPM) is now the official way to installstevia. The other package managers are now deprecated as of4.8.0 and won't be supported in future versions.
For Carthage/Cocoapods support (legacy versions) see documentationhere.
The following will teach you the gist of Stevia in one minute.
To go further, you can refer to the full documentationhere.
Stevia enables you to write readable Auto Layout code. It does so by tackling the 3 main components of layout:view hierarchy,layout andstyling.
email.translatesAutoresizingMaskIntoConstraints=falsepassword.translatesAutoresizingMaskIntoConstraints=falselogin.translatesAutoresizingMaskIntoConstraints=falseaddSubview(email)addSubview(password)addSubview(login)
becomes
subviews{ email password login}
email.topAnchor.constraint(equalTo: topAnchor, constant:100).isActive=trueemail.leftAnchor.constraint(equalTo: leftAnchor, constant:8).isActive=trueemail.rightAnchor.constraint(equalTo: rightAnchor, constant:-8).isActive=trueemail.heightAnchor.constraint(equalToConstant:80).isActive=truepassword.topAnchor.constraint(equalTo: email.bottomAnchor, constant:8).isActive=truepassword.leftAnchor.constraint(equalTo: leftAnchor, constant:8).isActive=truepassword.rightAnchor.constraint(equalTo: rightAnchor, constant:-8).isActive=truepassword.heightAnchor.constraint(equalToConstant:80).isActive=truelogin.topAnchor.constraint(lessThanOrEqualTo: password.bottomAnchor, constant:20).isActive=truelogin.leftAnchor.constraint(equalTo: leftAnchor).isActive=truelogin.rightAnchor.constraint(equalTo: rightAnchor).isActive=truelogin.heightAnchor.constraint(equalToConstant:80).isActive=truelogin.bottomAnchor.constraint(equalTo: bottomAnchor, constant:0).isActive=true
becomes
layout{100|-email-|~808|-password-|~80>=20 |login|~800}
email.borderStyle=.roundedRectemail.autocorrectionType=.noemail.keyboardType=.emailAddressemail.font=UIFont(name:"HelveticaNeue-Light", size:26)
becomes
email.style{ fin f.borderStyle=.roundedRect f.autocorrectionType=.no f.keyboardType=.emailAddress f.font=UIFont(name:"HelveticaNeue-Light", size:26) f.returnKeyType=.next}
YannickDot,S4cha,Damien,Snowcraft,Mathieu-o,Blaz Merela,Theophane Rupin,Jason Liang,liberty4me,Scott Bates,Sai,Mike Gallagher,WaterNotWords,Mick MacCallum,Onur Genes
Like the project? Offer coffee or support us with a monthly donation and help us continue our activities :)
Many top-notch Apps with millions of users use Stevia to write better Auto Layout code:
- Mobike - The world’s first and largest bike sharing system.
- Brightspace Pulse - Education app
- NerdWallet - Credit Score, Budget, Finance
- Yatra - Flights, Hotels & Cabs
- Yummypets - The world's cutest social network for pet lovers
- Invitation Maker - Greetings, Invite & Wishes
- Logo Maker - Create & Design 10,000+ Professional Logos
- Smart Cleaner - Delete Phone Photos, Contacts
- Tuner Eclipse - Free Guitar Tuner
- and many more...
You are using Stevia ? Please let me know @sachadso@gmail.com and I'll add you to the list 😍!
Become a sponsor and get your logo on our README on Github with a link to your site :)
About
🍃 Concise Autolayout code
Topics
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.


