我应该在哪里放置我的应用程序范围的UI自定义

时间:2013-03-24 09:22:41

标签: objective-c uiview subclass appdelegate uiappearance

我创建了一个类来完成自定义外观的所有工作。该班级是UIAppearance代表。

UI自定义目前影响,

  1. 导航栏
  2. 搜索栏
  3. 标签栏
  4. 所有这些元素都不会随着Views而变化,因为我无法预见到这种情况可能与其中任何一种都有不同的风格。

    在哪里以及如何将它放在应用程序范围内,以便我不必从任何地方调用这些方法(一次性调用以影响UI调整)?

    • 通过子类化?
    • AppDelegate是一个很好的候选人吗?
    • 导入主题类并手动调用方法

    是否可以一次性调用这些自定义设置?

3 个答案:

答案 0 :(得分:1)

您可以在-applicationDidFinishLaunching中执行此操作。

当您在上调用UINavigationBar时,appearance等UIKit类会为您提供外观代理

[[UINavigationBar appearance] setTintColor:myColor];myColor设置为所有导航栏的tintColor。

有关详细信息,请参阅UIAppearance documentation

答案 1 :(得分:1)

此链接有一些很好的资源,以及UIKit自定义的示例。 http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-uikit-theme-customization/

他们也使用applicationDiDFinishLaunching。

答案 2 :(得分:1)

你可以使用像SharedManager这样的singleTon类,在其中创建所有这个对象,它将在你的应用程序中可用。

//步骤1:创建名为“SharedManager.h”的文件

#import <Foundation/Foundation.h>

@interface SharedManager : NSObject
{
    UINavigationBar *navBar;
    UISearchBar *searchBar;
}

@property (nonatomic, retain) UINavigationBar *navBar;
@property (nonatomic, retain) UISearchBar *searchBar;

+(SharedManager *)sharedInstance;

@end

//第2步:创建一个文件:“SharedManager.m”

#import "SharedManager.h"

static SharedManager *_sharedManager;
@implementation SharedManager

@synthesize navBar , searchBar;

+(SharedManager *)sharedInstance
{
    if(_sharedManager == nil)
    {
        _sharedManager = [[SharedManager alloc] init];

        // Create Navigation Bar
        _sharedManager.navBar = [[UINavigationBar alloc] init];

        // Create Search Bar
        _sharedManager.searchBar = [[UISearchBar alloc] init];
    }

    return _sharedManager;
}

@end

//要访问该对象,请使用以下代码,   #import“SharedManager.h”

 [[SharedManager sharedInstance].navBar];

它将返回NavigationBar的对象