我创建了一个类来完成自定义外观的所有工作。该类是UIAppearance
委托的。
UI 定制目前影响,
- 导航栏
- 搜索栏
- 标签栏
所有这些元素都不会改变,Views
因为我无法预见我可能对其中任何一个有不同风格的情况。
我可以在哪里以及如何将它放置在应用程序范围内,这样我就不必从任何地方调用这些方法(一次调用以影响 UI 调整)?
- 通过子类化?
- AppDelegate 是一个很好的候选人吗?
- 导入主题类并手动调用方法
是否可以一次性调用这些自定义项?
我创建了一个类来完成自定义外观的所有工作。该类是UIAppearance
委托的。
UI 定制目前影响,
所有这些元素都不会改变,Views
因为我无法预见我可能对其中任何一个有不同风格的情况。
我可以在哪里以及如何将它放置在应用程序范围内,这样我就不必从任何地方调用这些方法(一次调用以影响 UI 调整)?
是否可以一次性调用这些自定义项?
您可以在-applicationDidFinishLaunching
.
当你调用类时,UIKit 类UINavigationBar
会给你一个外观代理:appearance
[[UINavigationBar appearance] setTintColor:myColor];
设置myColor
为所有导航栏的 tintColor。
有关更多详细信息,请参阅UIAppearance 文档。
您可以使用像 SharedManager 这样的 singleTon 类,在其中创建所有这些对象,它将在您的应用程序中可用。
// 第一步:创建一个名为“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 的对象