Expressive, flexible, and powerful stylesheets for UIView and friends.
Clone or download
dnedrow Update CHANGELOG.md
Added v1.0.0 notes.
Latest commit 0ae47bf Nov 6, 2017

README.md

Classy Build Status Coverage Status Carthage compatible iOS Level

** Classy is looking for contributors **

Not CSS. Instead of trying to force UIKit to fit CSS syntax, properties, conventions and constructs. Classy is a stylesheet system built from the ground up to work in harmony with UIKit. It borrows the best ideas from CSS and introduces new syntax, conventions and constructs where appropriate.

Plays nice with Interface Builder and views created in code.

For detailed usage see the docs or the wiki.

Supports UIAppearance

Classy supports all UIAppearance properties and methods and much more. But instead of being limited to +appearanceWhenContainedIn: and +appearance, Classy gives you much greater control over which views are styled and with what values.

Example Stylesheets

Classy features a very flexible, nestable syntax. Classy makes { } : ; all optional so you can choose a style that suits you. It also saves you from worrying about small syntax mistakes like accidentally forgetting to end a line with a ;

You can use { } : ; to delimit your stylesheets

@import "other_stylesheet.cas";

$mainColor = #e1e1e1;

// Supports your custom UIView subclasses
MYCustomView {
  background-color: $mainColor;
  title-insets: 5, 10, 5, 10;
  > UIProgressView.tinted {
    progress-tint-color: rgb(200, 155, 110, 0.6);
    track-tint-color: yellow;
  }
}

/*
 * Supports Single or Multi-line comments
 */
^UIButton.warning, UIView.warning ^UIButton {
  title-color[state:highlighted]: #e3e3e3;
}

OR you can use whitespace to delimit your sytlesheets

@import "other_stylesheet.cas"

$mainColor = #e1e1e1

// Supports your custom UIView subclasses
MYCustomView 
  background-color $mainColor
  title-insets 5, 10, 5, 10
  > UIProgressView.tinted 
    progress-tint-color rgb(200, 155, 110, 0.6)
    track-tint-color yellow

/*
 * Supports Single or Multi-line comments
 */
^UIButton.warning, UIView.warning ^UIButton 
  title-color[state:highlighted] #e3e3e3

Live Reload

Live reload can dramatically speed up your development time, with live reload enabled you can instantaneously see your stylesheet changes. Without having to rebuild and navigate back to the same spot within your app.

For more details about these features and more visit the docs or the wiki.

Inspiration