Flat UI
Flat UI is a popular Bootstrap theme from Designmodo with a nice default palette. Here's a color palette file for OS X, useful if you want a small but well-chosen set of colors for app prototyping.
Flat UI is a popular Bootstrap theme from Designmodo with a nice default palette. Here's a color palette file for OS X, useful if you want a small but well-chosen set of colors for app prototyping.
The Isolator is a bizarre helmet invented in 1925 that encourages focus and concentration by rendering the wearer deaf, piping them full of oxygen, and limiting their vision to a tiny horizontal slit.
I'm not sure it seems that bizarre if you've worked in an open-plan office.
With the release of the iPhone 6, Shiny Development recently discontinued Status Magic, but they also released this open source app that uses private APIs to customize the status bar on the Simulator. It might be an even better way to generate App Store screenshots.
Even for Cocoa, adding actions to a UIAlertController is tediously verbose.
[alertController addAction:[UIAlertAction actionWithTitle:title
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
doSomething();
}]];
The string "action" appears six times in the method call. There are only three kinds of actions. Wouldn't this be clearer?
[alertController addDefaultActionWithTitle:title handler:^(UIAlertAction *action) {
doSomething();
}];
Yes it would.
@implementation UIAlertController (Extras)
- (void)addCancelActionWithTitle:(NSString *)title
handler:(void (^)(UIAlertAction *action))handler {
[self addAction:[UIAlertAction actionWithTitle:title
style:UIAlertActionStyleCancel
handler:handler]];
}
- (void)addDefaultActionWithTitle:(NSString *)title
handler:(void (^)(UIAlertAction *action))handler {
[self addAction:[UIAlertAction actionWithTitle:title
style:UIAlertActionStyleDefault
handler:handler]];
}
- (void)addDestructiveActionWithTitle:(NSString *)title
handler:(void (^)(UIAlertAction *action))handler {
[self addAction:[UIAlertAction actionWithTitle:title
style:UIAlertActionStyleDestructive
handler:handler]];
}
@end