gpt4 book ai didi

ios - UIImageView setImage 不会改变图像的外观

转载 作者:行者123 更新时间:2023-11-29 00:27:53 24 4
gpt4 key购买 nike

我正在编写一个音调生成器 UI,每次生成器开始生成和完成生成时,我都需要更改 UIImageView 图像。为此,我有

@property (weak, nonatomic) IBOutlet UIImageView *headphonesImage;

在我的 UIViewController 中。我像这样向它添加默认图像

- (void) viewDidLoad
{
...
headphonesImagesArray = [NSArray arrayWithObjects:
[UIImage imageNamed: @"Both Headphones"],
[UIImage imageNamed: @"Both Headphones Playing"],
nil];

[self.headphonesImage setAlpha: 0.5];
[self.headphonesImage setImage: headphonesImagesArray[0]];
...
}

我的音频发生器将消息发送到此方法

-   (void) toneGeneratorControllerStateHasChangedWithNotification: (NSNotification *) notification
{
if([notification.name isEqualToString: ToneGenerationHasFinished])
[self.headphonesImage setImage: headphonesImagesArray[0]];
else
[self.headphonesImage setImage: headphonesImagesArray[1]];
}

问题是虽然耳机图像图像更改为[1],但什么也没有发生。我可以在变量检查器中看到,每次调用该方法时,headersImage 图像都会发生变化,但这些变化不会出现在模拟器和 iPhone 的屏幕上。我什至无法隐藏这个该死的 UIImageView。 setHidden: true 不执行任何操作。

请帮忙!

最佳答案

“我的音调发生器将消息发送到此方法”

如果正在编写音调生成器,它听起来像是在后台线程上运行。您应该在主线程上发送通知,尤其是当它们触发 UI 更改(例如设置图像)时,例如:

dispatch_async(dispatch_get_main_queue(),^{
[[NSNotificationCenter defaultCenter] postNotificationName:@"toneGeneratorControllerStateHasChanged"
object:nil
userInfo:imageDict];
});

或者,您可以按照 Igor 的建议将图像更改发送到主线程。缺点是每次使用此类通知时都必须这样做,而不是在一个地方这样做。

关于ios - UIImageView setImage 不会改变图像的外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42579394/

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