2009-08-13 10 views
3

私はShadowViewと呼ばれるUIImageViewサブクラスを持っています。これは何かの下で使用できる影を表示します。シャドウビューはペン先からロードされます。 initWithCoderでstretchableImageWithLeftCapWidth:topCapHeightは、UIImageViewサブクラスの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:と同様に実装されています。

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

答えて

3

shadowImageはありませんか?この方法は、それが+ 1つの画素は、伸張するキャップ4つの画素を必要とするため、ベースイメージが5つの未満ピクセル幅または5つの画素トールである場合にnilを返すことができること

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

+2

9ピクセル×9ピクセルと思う。中央の行と列。各辺に沿って帽子が付いています。 –

関連する問題