SCTheme Class Reference
Inherits from | NSObject |
Declared in | SCTheme.h |
Overview
The SCTheme class enables CSS-like styling of UIView (or any of its subclasses). Using CSS-like text files, any UIView property with a supported data type can be set. Key-path property format is fully supported (e.g. layer.cornerRadius: 5). All pointer data types accept nil as value (e.g. backgroundView: nil;).
Supported property data types:
Data Type –> Format in .sct file
NSString* –> A string between single or double quotes. Example:
detailTextLabel.text: "Hello World!";
CGFloat –> A normal number. Example:
height: 60;
BOOL –> Possible values: TRUE, FALSE, YES, NO. All case insensitive. Example:
clipsToBounds: NO;
UIColor* –> Any UIColor color name constructor. Example:
backgroundColor: blueColor;
or rgb(redValue, greenValue, blueValue, optionalAlphaValue) Example:
backgroundColor: rgb(100, 0, 255);
or #hexValue Example:
backgroundColor: #CC33FF
or A string containing an image resource. Example:
backgroundColor: "background.png";
CGColorRef –> Format identical to UIColor. Example:
layer.borderColor: redColor;
CGRect –> CGRect(x, y, width, height) Example:
textLabel.frame: CGRect(10, 10, 180, 30);
CGSize –> CGSize(width, height) Example:
textLabel.shadowColor: darkGrayColor;
textLabel.shadowOffset: CGSize(1, 1);
UIImage* –> A string containing the image resource. Example:
backgroundImage: "background.png"
or A string containing the image resource and capInsets(top, left, bottom, right). Example:
backgroundImage: "background.png" capInsets(0,0,0,0)
UIFont* –> Font name and size separated by a space. A good resource for font names is: http://iosfonts.com/ Example:
textLabel.font: Courier-Bold 12;
UIView* –> A string containing an image resource that will be loaded into a UIImageView. Example:
backgroundView: "background.png";
UITableViewCellSeparatorStyle Any valid UITableViewCellSeparatorStyle constant. Example:
separatorStyle: UITableViewCellSeparatorStyleNone;
Sample theme file: MyTheme.sct
UINavigationBar
{
backgroundImage: "navbar-background.png";
}
UITableView
{
backgroundView: "leather-background.png";
}
SCPullToRefreshView
{
backgroundColor: "leather-background.png";
}
SCTableViewSection
{
firstCellThemeStyle: firstCell;
oddCellsThemeStyle: oddCell;
evenCellsThemeStyle: evenCell;
lastCellThemeStyle: lastCell;
}
firstCell
{
backgroundView: "firstCell-background.png";
selectedBackgroundView: "selectedFirstCell-background.png";
}
oddCell
{
backgroundView: "oddCell-background.png";
selectedBackgroundView: "selectedOddCell-background.png";
}
evenCell
{
backgroundView: "evenCell-background.png";
selectedBackgroundView: "selectedEvenCell-background.png";
}
lastCell
{
backgroundView: "lastCell-background.png";
selectedBackgroundView: "selectedLastCell-background.png";
}
Sample code needed to use the above theme file:
self.tableViewModel.theme = [SCTheme themeWithPath:@"MyTheme.sct"];
Tasks
Creation and Initialization
-
+ themeWithPath:
Allocates and returns an initialized SCTheme given the path of the theme file.
-
– initWithPath:
Returns an initialized SCTheme given the path of the theme file.
Custom Styling
-
– styleObject:usingThemeStyle:
Styles the given object (typically a UIView subclass) using a style name provided in the theme’s theme file.
-
– styleObject:usingThemeStyle:onlyStylePropertyNamesInSet:
Styles the given object (typically a UIView subclass) using a style name provided in the theme’s theme file, limiting the styled properties to the ones provided in propertyNames only. If propertyNames is nil, all object properties will be styled.
Instance Methods
initWithPath:
Returns an initialized SCTheme given the path of the theme file.
- (id)initWithPath:(NSString *)path
Declared In
SCTheme.h
styleObject:usingThemeStyle:
Styles the given object (typically a UIView subclass) using a style name provided in the theme’s theme file.
- (void)styleObject:(NSObject *)object usingThemeStyle:(NSString *)style
Declared In
SCTheme.h
styleObject:usingThemeStyle:onlyStylePropertyNamesInSet:
Styles the given object (typically a UIView subclass) using a style name provided in the theme’s theme file, limiting the styled properties to the ones provided in propertyNames only. If propertyNames is nil, all object properties will be styled.
- (void)styleObject:(NSObject *)object usingThemeStyle:(NSString *)style onlyStylePropertyNamesInSet:(NSSet *)propertyNames
Discussion
Note: Naturally, properties in propertyNames will only be styled if they exist in the theme style.
Declared In
SCTheme.h