3

私は、ShadowView と呼ばれる UIImageView サブクラスを持っています。これは、何の下でも使用できる影を表示します。ShadowView は nib からロードされます。

initWithCoder: には、次のコードがあります。

- (id)initWithCoder:(NSCoder *)decoder {
    self = [super initWithCoder:decoder];
    if (self != nil) {
        UIImage *shadowImage = [[UIImage imageNamed:@"drop_shadow_4_pix.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:4];

        [self setContentMode:UIViewContentModeScaleToFill];
        [self setImage:shadowImage];
    }
    return self;
}

ただし、アプリを実行すると、この画像は表示されません。

しかし、私がそれを

...
UIImage *shadowImage = [UIImage imageNamed:@"drop_shadow_4_pix.png"];
...

正常に動作しますが、ストレッチが間違っています。

なぜこれが起こっているのかについてのアイデアはありますか?

編集: initWithFrame:をinitWithCoder:と同様に実装して、シャドウビューをプログラムでロードする場合と同じです。

別の編集:問題を解決したと思います。自動サイズ変更マスクを設定する必要がありました。

4

1 に答える 1

3

shadowImage は nil ですか?

UIImage *shadowImage = [[UIImage imageNamed:@"drop_shadow_4_pix.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:4];

ベース画像の幅が 5 ピクセル未満、または高さが 5 ピクセル未満である場合、このメソッドは nil を返す可能性があります。

于 2009-08-14T03:44:32.087 に答える