2009-08-13 4 views
3

У меня есть подкласс UIImageView под названием ShadowView, который отображает тень, которую можно использовать под любым. 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"]; 
... 

он отлично работает, но он растягивается неправильно.

Любые идеи относительно того, почему это происходит?

Редактировать: Это то же самое, когда я загружаю shadowview программно, с initWithFrame: реализовано аналогично initWithCoder :.

Другое Редактировать: Я думаю, что я решил проблему. Мне нужно было установить авторезистирующие маски.

ответ

3

Is shadowImage nil?

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

Этот метод может возвращать ноль, если базовое изображение составляет менее 5 пикселей в ширину или 5 пикселей в высоту, так как он нуждается в 4 пикселя для крышек + 1 пиксель, чтобы растянуть.

+2

9 пикселей на 9 пикселей, думаю. Центральная строка и столбец с крышками вдоль каждой стороны. –

Смежные вопросы