嘿伙计我有以下内容:
- (void)viewDidLoad
{
[super viewDidLoad];
// SET BACKGROUND OF APPLICATION ON STARTUP
[self.view setBackgroundColor: [self colorWithHexString:@"88C800"]];
// Do any additional setup after loading the view, typically from a nib.
}
-(UIColor*)colorWithHexString:(NSString*)hex
{
NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) return [UIColor grayColor];
// strip 0X if it appears
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2];
if ([cString length] != 6) return [UIColor grayColor];
// Separate into r, g, b substrings
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f)
green:((float) g / 255.0f)
blue:((float) b / 255.0f)
alpha:1.0f];
}
这会将我view controller (root)
的背景颜色更改为我提供的指定十六进制颜色。我的问题是,当导航到另一个view controller
时,如何让上述功能影响我的所有view controllers
?此代码位于我的ViewController.m
不确定我需要做什么,建议和想法?
答案 0 :(得分:2)
我建议两件事:
colorWithHexString:
上设置UIColor
类别类方法。然后,您可以从导入类别.h文件的任何类访问该方法。MyBaseViewController
。让此类扩展UIViewController
,然后让所有应用程序的视图控制器扩展MyBaseViewController
。将所有常见设置放在基类中。如果您还需要一些表视图控制器,那么使用类似的代码创建一个MyBaseTableViewController
类。答案 1 :(得分:1)
使用实例方法无法轻松完成此操作。你应该做两件事:(1)将colorWithHexString:
提升为UIColor类方法(使用类别); (2)如果您要在很多地方使用相同的颜色,请将颜色放在可以从任何地方获取的颜色,例如 .pch 文件或其他一些标题每个人都可以导入。
以下是我自己的代码中的示例:
// MyIncudes.h
@interface UIColor (mycats)
+ (UIColor*) myGolden;
+ (UIColor*) myPaler;
@end
// MyIncludes.m
@implementation UIColor (mycats)
+ (UIColor*) myGolden {
return [self colorWithRed:1.000 green:0.894 blue:0.541 alpha:.900];
}
+ (UIColor*) myPaler {
return [self colorWithRed:1.000 green:0.996 blue:0.901 alpha:1.000];
}
@end
现在,任何导入 MyIncludes.h 的人都可以访问这些颜色。