好吧!
那么,如何将我设置图标的方式集中在一个更大的项目中。
设置[UIImage ImageNamed: @"iconNamed"];
随处可见的图标,并且必须查看项目中的所有位置以在更改图标时更改字符串,并且设置返回字符串的方法实现的长列表。
最终结果应该是这样的:
所以首先你创建一个 .h 文件,比如@interface MyIcons : NSObject
然后你开始你的单例实现:
+(MyIcons *)sharedIcons ;
其次是:
typedef enum {
IconMenuSmallWht,
IconMenuBigWht,
IconShoppingSmall,
IconShoppingBig,
IconSleepingSmall,
IconSleepingBig,
} iconType;
- (NSString*) iconToString:(iconType) chooseIcon;
在 .m 文件中,您首先完成单例实现:
+(MyIcons *)sharedIcons {
static dispatch_once_t once;
static MyIcons *sharedIcons = nil;
dispatch_once(&once, ^{
sharedIcons = [[self alloc] init];
});
return sharedIcons;
}
最后你做:
- (NSString*) iconToString:(iconType) chooseIcon {
NSString *result = nil;
switch(chooseIcon) {
case IconMenuSmallWht:
result = @"ag_icons_btn_menu_wht";
break;
case IconMenuBigWht:
result = @"c";
break;
case IconShoppingSmall:
result = @"ag_icons_idx_ico_shopping_wht";
break;
case IconShoppingBig:
result = @"ag_icons_idx_ico_shopping_wht_120";
break;
case IconSleepingSmall:
result = @"ag_icons_idx_ico_hotel_wht";
break;
case IconSleepingBig:
result = @"ag_icons_idx_ico_hotel_wht_120";
break;
return result;
}
而已。它只是将图标添加到枚举和此开关/案例中。无论你想在哪里实现你的图标,你只需#import MyIcons.h
添加[MyIcons SharedIcons]iconToString:
并瞧你得到你的选择列表。
希望你喜欢这种方式。我知道我会的!(-:-)
或者,只需像 Apple 为全局键定义的常量......
在.h
文件中:
extern NSString *const kIconMenuSmallWht;
extern NSString *const kIconMenuBigWht;
extern NSString *const kIconShoppingSmall;
extern NSString *const kIconShoppingBig;
extern NSString *const kIconSleepingSmall;
extern NSString *const kIconSleepingBig;
在.m
文件中:
NSString *const kIconMenuSmallWht = @"ag_icons_btn_menu_wht";
NSString *const kIconMenuBigWht = @"c";
NSString *const kIconShoppingSmall = @"ag_icons_idx_ico_shopping_wht";
NSString *const kIconShoppingBig = @"ag_icons_idx_ico_shopping_wht";
NSString *const kIconSleepingSmall = @"ag_icons_idx_ico_shopping_wht_120";
NSString *const kIconSleepingBig = @"ag_icons_idx_ico_hotel_wht_120";
这些是常量……全局变量并不总是坏的!
(而且很多人觉得单例只是全局变量,而且同样邪恶)
这也将在Xcode中提供自动完成功能,并且只有一个地方可以进行更新/更改,但更简单,并且没有方法调用或对象来创建更好的性能(尽管可能是无限小的性能)。