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 のメソッド内で初期化されていることに注意してください。ブレークポイントを設定すると表示されます。drawRect(提案どおり)やawakeFromNibなど、imageViewの値を別の場所に設定してみてください。

于 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 に答える