iOS 5 のみをターゲットにしている場合は、外観プロキシを使用できます。これにより、アプリケーション全体の UI 要素を 1 点でカスタマイズできます。
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html
古いiOSでこれを行う必要がある場合、これを行うための本当に良い解決策はありません. here で説明されているメソッドスウィズリングを使用するアプローチがあります。
http://samsoff.es/posts/customize-uikit-with-method-swizzling
しかし、これは iOS 5 では機能しなくなりました。最善の方法は、iOS 5 の外観プロキシを使用し、古い iOS のメソッド スウィズリングのような回避策を使用することです。
編集:
アピアランス プロキシが利用可能な場合はそれを使用し、利用できない場合はメソッド スウィズリングを使用するコードを次に示します。
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
// iOS >= 5.0 -> Use Appearance API
[[UINavigationBar appearance] setTintColor:[UIColor redColor]];
}
else {
// iOS < 5.0 -> Use Method Swizzling
Method drawRectCustomBackground = class_getInstanceMethod([UINavigationBar class], @selector(drawRectCustomBackground:));
Method drawRect = class_getInstanceMethod([UINavigationBar class], @selector(drawRect:));
method_exchangeImplementations(drawRect, drawRectCustomBackground);
}
メソッドはのdrawRectCustomBackground
カテゴリに実装されていますUINavigationBar
。