2013-10-02 43 views
0

我想在UICollectionCell的子類中設置UIImageView的框架大小,但它不起作用。我使用故事板。在initWithCoder中設置UIImageView框架

在代碼中,一切正常,但關於imageView的最後一行。 如果我把代碼放在drawRect中,它可以正常工作。

- (id)initWithCoder:(NSCoder *)decoder { 
if ((self = [super initWithCoder:decoder])) 
{ 
    self.backgroundColor = [UIColor colorWithWhite:0.85f alpha:1.0f]; 

    self.layer.borderColor = [UIColor lightGrayColor].CGColor; 
    self.layer.borderWidth = 1.0f; 

    self.layer.cornerRadius = 8.0f; 
    self.layer.masksToBounds = NO; 
    self.layer.shadowColor = [UIColor blackColor].CGColor; 
    self.layer.shadowRadius = 3.0f; 
    self.layer.shadowOffset = CGSizeMake(0.0f, 2.0f); 
    self.layer.shadowOpacity = 0.5f; 

    self.imageView.frame = CGRectMake(10, 10, 50, 50); 
} 

回答

0

是對圖像視圖由不同的對象以後移動?嘗試代碼移入layoutSubviews

添加這個方法:

- (void) layoutSubviews 
{ 
    [super layoutSubviews]; 

    self.imageView.frame = CGRectMake(10, 10, 50, 50); 
} 
+0

不,它不適用於layoutSubviews。這個視圖稍後不會被移動......我通過調用drawRect中的方法解決了這個問題(不是最優的,但它工作正常) – Sucrenoir

0

那是因爲你的ImageView的(我相信這是和IBOutlet中)尚未初始化,它仍然是零。請注意,您的一些變量/屬性正在初始化init的方法中進行初始化。設置你的斷點,你會看到。嘗試在其他地方設置imageView值,比如drawRect(如你所建議的)或awakeFromNib。