iphone - stretchableImageWithLeftCapWidth :topCapHeight doesn't work in initWithCoder: of UIImageView subclass

标签 iphone objective-c uiimageview uiimage

我有一个名为 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"];
...

它工作正常,但拉伸(stretch)错误。

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

编辑:当我以编程方式加载 shadowview 时,情况相同,initWithFrame: 的实现类似于 initWithCoder:。

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

最佳答案

shadowImage 是否为零?

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

如果基本图像的宽度小于 5 像素或高度小于 5 像素,则该方法可能返回 nil,因为它需要 4 个像素用于大写 + 1 个像素进行拉伸(stretch)。

关于iphone - stretchableImageWithLeftCapWidth :topCapHeight doesn't work in initWithCoder: of UIImageView subclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274433/

相关文章:

iphone - 如何从移动网站打开 iOS 6 map ?

objective-c - (Mac) 创建执行 shell 脚本的 Xcode 应用程序

ios - 如何将 UIImageView 放置在 Storyboard 中另一个 View 的一半

ios - UIImageView 没有可见的@interface 声明了选择器 sd_setShowActivityIndi​​catorView 并且未检测到 sd_setIndicatorStyle

iphone - TTPhotoViewController 获取当前中心图像?

ios - 如何在 UIButton 的标签 subview 上设置 alpha

objective-c - 组件通过字符串分隔 : does not split string which contains all the characters in the separator

iphone - layer.zPosition 不适用于非同级 UIView

iphone - 如何设置 iPhone 中特定按钮的背景颜色?

ios - 在 iOS 中滚动时如何禁用重新加载 tableview