2009-08-13 50 views
3

我有一個名爲ShadowView的UIImageView子類,它顯示可以在任何東西下使用的陰影。 ShadowViews將從筆尖加載。stretchableImageWithLeftCapWidth:topCapHeight在initWithCoder中不起作用: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零?

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

該方法可以返回零如果基本圖像是小於5個像素寬或5個像素高,因爲它需要的4個像素爲帽+ 1點的像素伸展。

+2

9像素9像素,我想。居中行和列,每邊都有帽子。 – 2009-08-14 03:55:56