Ios 更改UIImageView的图像属性时出现问题
我有一个UIImageView,当一个函数调用时,我希望更改为另一个(“活动”)图像,当另一个函数调用时,我希望更改回之前的图像。代码如下:Ios 更改UIImageView的图像属性时出现问题,ios,objective-c,uiview,uiimageview,uiimage,Ios,Objective C,Uiview,Uiimageview,Uiimage,我有一个UIImageView,当一个函数调用时,我希望更改为另一个(“活动”)图像,当另一个函数调用时,我希望更改回之前的图像。代码如下: - (NavButton *)initWithFrame:(CGRect *)fr andImage:(UIImage *)img andActiveImage:(UIImage *)acImg { NavButton *a = [[NavButton alloc] initWithFrame:*fr]; [a setBackgroundC
- (NavButton *)initWithFrame:(CGRect *)fr andImage:(UIImage *)img andActiveImage:(UIImage *)acImg {
NavButton *a = [[NavButton alloc] initWithFrame:*fr];
[a setBackgroundColor:[UIColor clearColor]];
UIImageView *aImg = [[UIImageView alloc] initWithFrame:CGRectMake(8.5, 8.5, 28, 28)];
aImg.tag = 13;
aImg.image = img;
self.orginalImage = img;
self.activeImage = acImg;
[a addSubview:aImg];
return a;
}
- (void)setIsActive:(NSNumber *)isActive {
self.active = isActive;
if ([isActive isEqualToValue:[NSNumber numberWithBool:NO]]) {
[self undoActive];
} else {
[self redoActive];
}
}
- (void)undoActive {
UIImageView *a = (UIImageView *)[self viewWithTag:13];
a.image = self.orginalImage;
}
- (void)redoActive {
UIImageView *a = (UIImageView *)[self viewWithTag:13];
a.image = self.activeImage;
}
当我调用
[btn setIsActive:[NSNumber numberWithBool:YES]]代码>或[btn setIsActive:[NSNumber numberWithBool:NO]]
两次都会删除图像,但当我不调用任何一次时,图像会保留在那里。那么,当我呼叫他们时,如何使其更改按钮的图像为正确的图像?只需执行以下检查即可:
if (![isActive boolValue]) {
然后,进行一些调试,添加一些断点和/或日志记录。检查实际接收到的值。标志设置是否正确。图像设置是否正确。是否有任何nil
只需执行以下检查即可:
if (![isActive boolValue]) {
然后,进行一些调试,添加一些断点和/或日志记录。检查实际接收到的值。标志设置是否正确。图像设置是否正确。如果任何内容nil
都可以为图像视图指定两个图像:一个为“图像”属性,另一个为“HighlighteImage”属性,而不是重复将图像指定给imageview。如果要在图像之间切换,请将布尔属性“highlighted”设置为是或否。您可以将两个图像指定给图像视图,而不是重复将图像指定给图像视图:一个指定给“image”属性,另一个指定给“highlightedImage”属性。当您想要在图像之间切换时,将布尔属性“highlighted”设置为YES或NO。现在,当我尝试记录图像时,当我在initWithFrame:andImage:andActiveImage:
中记录activeImage
时,我会得到一个UIImage实例,但当我尝试在redoActive
中记录相同的变量时,它会记录(null)
。我该如何解决这个问题?您如何定义orginalImage
和activeImage
?我在第一个函数中定义了它们,它们是属性,我已经合成了它们。您不在第一个方法中定义它们,而是使用它们。您是如何定义它们的?它们是strong
?@property(strong,单原子)UIImageNow,当我尝试记录图像时,当我在initWithFrame:andImage:andActiveImage:
中记录activeImage
时,我会得到一个UIImage实例,但当我尝试在redoActive
中记录相同的变量时,它会记录(null)
。我该如何解决这个问题?您如何定义orginalImage
和activeImage
?我在第一个函数中定义了它们,它们是属性,我已经合成了它们。您不在第一个方法中定义它们,而是使用它们。您是如何定义它们的?它们是strong
?@property(strong,单原子)UIImage吗