0

我正在尝试在 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);
}
4

2 回答 2

1

那是因为你的 imageView(我相信它和 IBOutlet)还没有初始化,它仍然是 nil。请注意,你们中的一些变量/属性正在 init 的方法中进行初始化。设置断点,你会看到。尝试在其他地方设置 imageView 值,例如 drawRect(如您所建议的)或 awakeFromNib。

于 2014-08-26T19:22:18.040 回答
0

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

添加这个方法:

- (void) layoutSubviews
{
    [super layoutSubviews];

    self.imageView.frame = CGRectMake(10, 10, 50, 50);
}
于 2013-10-02T10:22:20.683 回答