我应该在哪里放置我的应用程序范围的 UI 自定义
Posted
技术标签:
【中文标题】我应该在哪里放置我的应用程序范围的 UI 自定义【英文标题】:Where should I place my application wide UI customization 【发布时间】:2013-03-24 09:22:40 【问题描述】:我创建了一个类来完成自定义外观的所有工作。班级是UIAppearance
代表。
UI 自定义当前会影响,
-
导航栏
搜索栏
标签栏
所有这些元素都不会随Views
而变化,因为我无法预见我可能对其中任何一个有不同风格的情况。
我可以在哪里以及如何将它放置在应用程序范围内,这样我就不必从任何地方调用这些方法(一次调用以影响 UI 调整)?
通过子类化? AppDelegate 是一个很好的候选者吗? 导入主题类并手动调用方法是否可以一次性调用这些自定义项?
【问题讨论】:
【参考方案1】:您可以在-applicationDidFinishLaunching
中执行此操作。
appearance
时,像 UINavigationBar
这样的 UIKit 类会为您提供一个外观代理:
[[UINavigationBar appearance] setTintColor:myColor];
将myColor
设置为所有导航栏的 tintColor。
有关详细信息,请参阅UIAppearance documentation。
【讨论】:
是的,我正在使用 UIAppearance 代理。我有所有的背景图片。我真的可以在-applicationDidFinishLaunching
中做吗?这可能会使有问题的班级失去画面。
是的,applicationDidFinishLaunching
是正确的地方。您希望此代码在每次启动应用程序时只运行一次。此外,最好将所有外观自定义设置在一个地方。
你说的class out of picture是什么意思?
为少数几个基本封装在少数方法中的 UI 自定义代码创建一个类并没有多大意义。如果可以从applicationDidFinishLaunching
完成,则可以丢弃类概念。为什么不在那里有代码?【参考方案2】:
您可以使用像 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
// 第二步:创建文件:“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 的对象
【讨论】:
以上是关于我应该在哪里放置我的应用程序范围的 UI 自定义的主要内容,如果未能解决你的问题,请参考以下文章