2011-09-03 78 views
0

我想根據我在另一個類中設置的屬性來設置視圖的backgroundColor。視圖類部分看起來像這樣:從UIColor屬性設置UIView的backgroundColor的問題

// Interface iVar and property 
UIColor * coverColor; 
@property (nonatomic, retain) UIColor * coverColor; 

// Where I set up the view 
CGRect cover = CGRectMake(19.0, 7.0, coverWidth, coverHeight); 
UIView * coverView = [[UIView alloc] initWithFrame:cover]; 
coverView.layer.cornerRadius = 5; 
coverView.backgroundColor = coverColor; 
[self.contentView addSubview:coverView]; 
[coverView release]; 
coverView = nil; 

// In my other class where I try to set the color 
cell.coverColor = noteblock.color; 

// noteblock is a instance of a custom model (NSManagedObject) class. It have a property called color. The type is set to Transformable. It looks like this: 
@property (nonatomic, retain) UIColor * color; 
@dynamic color; 

// I set the color like this when I create new Noteblock objects: 
newNoteblock.color = [[[UIColor alloc] initWithRed:255.0/255.0 green:212.0/255.0 blue:81.0/255.0 alpha:1] autorelease]; 

當我在模擬器中運行應用程序,沒有顏色顯示,它是透明的。有關如何解決這個問題的任何想法?

+0

你在哪裏傳遞顏色值來這裏coverColor財產?你真的獲得了存儲在tat中的價值嗎? chk使用NSLog ... – booleanBoy

+0

當我運行NSLog(@「%@」,noteblock.color); (存儲在數據庫中的顏色)我得到以下輸出:UIDeviceRGBColorSpace 1 0.831373 0.317647 1. – Anders

回答

1

cell.coverColor = noteblock.color;更改屬性coverColor而不是coverView的backgroundColor。 您可以直接設置背景顏色(無需額外的屬性):

coverView = [cell coverView]; 
coverView.backgroundColor = noteblock.color; 

或覆蓋coverColor的二傳手:

-(void) setCoverColor:(UIColor*)color 
{ 
    if (coverColor != color) 
    { 
     [coverColor release]; 
     coverColor = [color retain]; 
     coverView.backgroundColor = coverColor; 
    } 
} 
+0

這不起作用,因爲作者想要設置'coverView'的'-backgroundColor'而不是單元的'-backgroundColor'。您需要使用標籤或其他iVar來引用'coverView'。 –

+0

Thins有效,但我不想設置視圖的backgroundColor,而是視圖的子視圖之一。對不起,在這個問題上並不清楚。像這樣:'CGRect cover = CGRectMake(19.0,7.0,coverWidth,coverHeight); coverView = [[UIView alloc] initWithFrame:cover]; coverView.layer.cornerRadius = 5; coverView.backgroundColor = coverColor;' – Anders

+0

我解決了它,只是對答案進行了非常輕微的修改,覆蓋了setCoverColor的技巧。謝謝! – Anders