设置背景颜色的UIView我在视图控制器下面的代码:无法从视图控制器
- (void)viewDidLoad {
[super viewDidLoad];
ThemeManager *themer = [ThemeManager sharedInstance];
UIView *theView = self.view;
UIColor *forBackground = [themer backgroundColour];
[theView setBackgroundColor:forBackground];
}
但是当执行获取到setBackgroundColor线,我得到以下错误:
*** -[NSCFNumber CGColor]: unrecognized selector sent to instance 0x1237c40
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFNumber CGColor]: unrecognized selector sent to instance 0x1237c40'
有一些简单的事情我做错了,我该如何设置背景颜色?
我必须继承该视图,并在那里做?我不希望有额外的类,尽管这是更好地分离整个模型/视图/控制器的东西。
更新:由[themer backgroundColour]
返回的值是使用colorWithPatternImage:
构造的,这可能会有所作为吗?
更新:如果我在使用colorWithRed构建的ThemeManager中使用了一个值:green:blue:alpha:,那它工作正常。有没有办法使用带背景图像的颜色来做到这一点?以下作品OK:
[theView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"myimage.png"]]];
更新:这个作品也没关系:
UIColor *forBackground = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myimage.png"]];
[theView setBackgroundColor:forBackground];
在我原来的例子,将对象从[themer backgroundColor]
返回是一个UIColor
,所以有什么问题呢?
当我步骤通过与调试器:
UIColor *forBackground = [themer backgroundColour];
导致forBackground
感型的NSConstantValueExpression *
和
UIColor *forBackground = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myimage.png"]];
导致forBackground
感型的UIDeviceRGBColor *
这里是ThemeManager的backgroundColour方法的代码:
- (UIColor *)backgroundColour {
if (backgroundColour == nil) {
backgroundColour = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myimage.png"]];
}
return backgroundColour;
}
backgroundColour也是实例变量的名称。
调试器与含setBackgroundColor – Curyous 2010-05-17 09:31:44
您打造的图案颜色只有backgroundColour是零线的红色箭头停止。你确定backgroundColour是零吗?如果您在创建颜色的线上放置断点,调试器会停止吗? – 2010-05-17 12:06:13
好点,我已经将颜色生成代码移动到了init方法中,无论如何它是一个更好的解决方案,尽管它不是这个问题的根本原因。 – Curyous 2010-05-18 10:06:14