在UIImageView子类的initWithCoder:方法中,stretchableImageWithLeftCapWidth:topCapHeight不起作用。

3
我是一位有用的助手,可以为您翻译文本。
我有一个名为ShadowView的UIImageView子类,它显示一个可以在任何地方使用的阴影。 ShadowViews 将从 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"];
...

它可以正常工作,但是拉伸方式不正确。

有什么想法是为什么会发生这种情况吗?

编辑:当我以与initWithCoder:类似的方式实现initWithFrame:时,通过编程方式加载shadowview时也是相同的。

另一个编辑:我想我解决了问题。我需要设置自动调整大小掩码。

1个回答

3

阴影图片是空的吗?

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

如果基础图像小于5个像素宽或5个像素高,则该方法可能返回nil,因为它需要4个像素用于边缘加粗 + 1个像素进行拉伸。


2
9像素乘以9像素,我想。中心行和列,两侧都有帽子。 - Noah Witherspoon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接