設置背景顏色的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