gpt4 book ai didi

iphone - UIImage+Retina4 类别如果在 didMoveToSuperview 中使用则不起作用

转载 作者:行者123 更新时间:2023-11-29 04:17:15 25 4
gpt4 key购买 nike

如果应用在 Retina 4 设备上运行,我将使用此 UIImage 类别自动查找正确的资源: http://www.sourcedrop.net/FY53a14b0127f

如果 UIImageUIView 子类的 init< 中实例化,它会正确找到带有 -568h@2x 后缀的资源方法:

-(id) init{
self = [super init];
if(self){
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setImage:[UIImage imageNamed:@"go_back_image"] forState:UIControlStateNormal];
[self addSubview:myButton];
}
}

但是如果 UIImage 在类的 didMoveToSuperView 中实例化,则该类别不会获取该资源:

-(void)didMoveToSuperview{
if(self.superview != nil){
[myButton setImage:[UIImage imageNamed:@"otherImage"] forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"otherImageHighlighted"] forState:UIControlStateHighlighted];
}
}

如果 UIImage 是在 didMoveToSuperview 中创建的,则显示正常大小的资源...

有什么想法吗?

最佳答案

尝试在类别代码中使用断点。

我遇到了一个问题,即未选择图像,因为我将图像设置为@“someImage.png”,例如

[myButton setImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal];

而不是像这样简单地“someImage”

[myButton setImage:[UIImage imageNamed:@"someImage"] forState:UIControlStateNormal];

通过在类别类中调试发现这是问题,并使用这一行来修复:

//removing png extension, if present
imageNameMutable = (NSMutableString *)[imageNameMutable stringByDeletingPathExtension];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageNameMutable ofType:@"png"];

您可能需要做类似的事情。祝你好运:)

关于iphone - UIImage+Retina4 类别如果在 didMoveToSuperview 中使用则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com