在initWithCoder中设置UIImageView框架

时间:2013-10-02 09:32:26

标签: ios uiimageview storyboard initwithcoder

我试图在UICollectionCell的子类中设置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);
}

2 个答案:

答案 0 :(得分:1)

那是因为你的imageView(我相信它和IBOutlet)尚未初始化,它仍然是零。请注意,有些变量/属性正在init方法中初始化。设置断点,你会看到。尝试在其他位置设置imageView值,例如drawRect(如您所示)或awakeFromNib。

答案 1 :(得分:0)

图像视图稍后是否被其他对象移动?尝试将该代码移动到layoutSubviews

添加此方法:

- (void) layoutSubviews
{
    [super layoutSubviews];

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