Skip to content

Instantly share code, notes, and snippets.

@dictav
Last active January 4, 2016 14:09
Show Gist options
  • Select an option

  • Save dictav/8632557 to your computer and use it in GitHub Desktop.

Select an option

Save dictav/8632557 to your computer and use it in GitHub Desktop.
// navigation bar の背景画像を設定
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"]
forBarMetrics:UIBarMetricsDefault];
UIImage *backButtonImage = [[UIImage imageNamed:@"back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 28, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-100, 0)
forBarMetrics:UIBarMetricsDefault];
// Setting UIViewController
[UIViewController setDefaultSettingWithBlock:^(UIViewController *viewController) {
UIBarButtonItem *backBarButtonItem;
backBarButtonItem = viewController.navigationItem.backBarButtonItem;
if (!backBarButtonItem) {
backBarButtonItem = [UIBarButtonItem new];
[viewController.navigationItem setBackBarButtonItem:backBarButtonItem];
}
[backBarButtonItem setBackButtonBackgroundImage:backButtonImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
[backBarButtonItem setBackButtonTitlePositionAdjustment:UIOffsetMake(-100, 0)
forBarMetrics:UIBarMetricsDefault];
// 背景画像を設定
UIImage *bgImage = [UIImage imageNamed:@"background.png"];
viewController.view.backgroundColor = [UIColor colorWithPatternImage:bgImage];
}];
#import "UIViewController+DefaultSetting.h"
#import <objc/runtime.h>
@implementation UIViewController (DefaultSetting)
static void (^settingHandler)(UIViewController *viewController);
+ (void)setDefaultSettingWithBlock:(void (^)(UIViewController* viewController))handler
{
settingHandler = handler;
SEL originalSelector = @selector(viewDidLoad);
SEL overrideSelector = @selector(swizz_viewDidLoad);
Method originalMethod = class_getInstanceMethod(self, originalSelector);
Method overrideMethod = class_getInstanceMethod(self, overrideSelector);
method_exchangeImplementations(originalMethod, overrideMethod);
}
- (void)swizz_viewDidLoad
{
[self swizz_viewDidLoad]; //swizz_* was renamed by method_exchangeImplementations()
settingHandler(self);
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment