为什么将MBProgressHUD的隐藏属性设置为YES,但isHidden方法为NO?

6
我正在使用一个MBProgressHUD视图来在从互联网下载内容时显示加载状态。当下载完成后,我调用hide方法来隐藏该视图。我想使用计时器通过检查视图的隐藏状态(即isHidden方法)判断是否下载已完成。但是,当我将视图的隐藏设置为YES时,然后检查isHidden方法,它返回的是NO。我不知道为什么视图会出现这种情况?
以下是一些代码片段:
MBProgressHUD   *HUD; // instance variable

在下载完成的方法中:
[HUD hide:YES];
NSLog(@"HUD isHidden: %@",[HUD isHidden] ? @"YES" : @"NO");

当该方法被调用时,输出为“NO”。
2个回答

5
根据MBProgressHUD的实现,它们不使用UIView的hidden属性隐藏它。他们只是将MBProgressHUD的alpha设置为0,这样它就不会被看到了。

谢谢您的回复,我已经检查了hide:方法的实现。正如您所说,它们将alpha值设置为0,并没有使用UIView的hidden属性。我想知道他们是否应该更新hidden属性? - chancyWu

4
我发现:
在MBProgressHUD中,isHidden方法默认设置为NO,所以您可以始终(当您检查时)获得NO。您不需要检查superviews。
要检查MBProgressHUD的状态是否隐藏/显示,请执行以下操作:
在[HUD hide:YES]后,设置[HUD setHidden:YES],然后它将正常工作。
NSLog(@"HUD isHidden: %@",[HUD isHidden] ? @"YES" : @"NO");
//Output in consol YES

是的,你说得对。我检查了隐藏实现,它将 alpha 值更改为 0 来隐藏视图,并没有更新 hidden 属性。按照你的方法,我可以检查 isHidden 属性的值。感谢你的回答。 - chancyWu
但我认为Rahul的答案对我更好。他向我展示了隐藏实现。我会投票给你。 - chancyWu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接