代码之家  ›  专栏  ›  技术社区  ›  Jonathan Sterling

StretchableImageWithLeftCapWidth:TopCapHeight在uiImageView子类的InitWithCoder:中不起作用

  •  3
  • Jonathan Sterling  · 技术社区  · 16 年前

    我有一个名为shadowview的uiImageView子类,它显示了可以在任何内容下使用的阴影。阴影视图将从笔尖加载。

    在initwitcoder:中,我有以下代码:

    - (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:以编程方式加载shadowview时,它是相同的,实现方式与initwitcoder:类似。

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

    1 回复  |  直到 15 年前
        1
  •  3
  •   dmercredi    16 年前

    shadowimage为零吗?

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

    如果基础图像宽度小于5像素或高度小于5像素,则该方法可能返回零,因为它需要4个像素来拉伸caps+1像素。