stretchableImageWithLeftCapWidth:topCapHeight在initWithCoder中不起作用:UIImageView子类(stretchableImageWithL

编程入门 行业动态 更新时间:2024-10-28 15:33:41
stretchableImageWithLeftCapWidth:topCapHeight在initWithCoder中不起作用:UIImageView子类(stretchableImageWithLeftCapWidth:topCapHeight doesn't work in initWithCoder: of UIImageView subclass)

我有一个名为ShadowView的UIImageView子类,它显示可以在任何东西下使用的阴影。 ShadowViews将从笔尖加载。

在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类似地实现:

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

I have a UIImageView subclass called ShadowView, which displays a shadow that can be used under anything. ShadowViews are to be loaded from a nib.

In initWithCoder:, I have the following code:

- (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; }

When I run the app, though, this image does not appear.

But if I change it to

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

it works fine, but it is stretched wrong.

Any ideas as to why this is happening?

Edit: it is the same when I load the shadowview programmatically, with initWithFrame: implemented similarly to initWithCoder:.

Another Edit: I think I solved the problem. I needed to set the autoresizing masks.

最满意答案

shadowImage是否为零?

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

如果基本图像小于5像素宽或5像素高,则该方法可以返回nil,因为它需要4个像素用于大写字母+ 1个像素来拉伸。

Is shadowImage nil?

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

That method could return nil if the base image is less than 5 pixels wide or 5 pixels tall since it needs the 4 pixels for the caps + 1 pixel to stretch.

更多推荐

本文发布于:2023-07-26 05:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1271323.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:子类   中不   initWithCoder   topCapHeight   stretchableImageWithLeftCapWidth

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!