有没有办法将所有 UILabel 设置为隐藏在 Objective-C 中?我正在根据if
语句显示和隐藏标签,感觉我正在编写非常庞大的代码。有没有办法将所有 UILabel 选择setHidden:YES
为 la CSS?
编辑:我需要其中一个一次可见,而不是一次全部隐藏。
谢谢!
有没有办法将所有 UILabel 设置为隐藏在 Objective-C 中?我正在根据if
语句显示和隐藏标签,感觉我正在编写非常庞大的代码。有没有办法将所有 UILabel 选择setHidden:YES
为 la CSS?
编辑:我需要其中一个一次可见,而不是一次全部隐藏。
谢谢!
如果所有标签都位于同一视图中,则可以使用它的subviews
属性:
for (UIView *subview in self.view.subviews) {
if ([subview isKindOfClass:[UILabel class]]) {
subview.hidden = YES;
}
}
如果有许多带有标签的视图,您甚至可以为整体添加一个类别UIView
。
@interface UIView (HideLabels)
- (void)hideAllLabels:(BOOL)hide withExcludedLabel:(UILabel *)label;
@end
@implementation UIView (HideLabels)
- (void)hideAllLabels:(BOOL)hide withExcludedLabel:(UILabel *)label
{
for (UIView *subview in self.view.subviews) {
if (subview != label && [subview isKindOfClass:[UILabel class]]) {
subview.hidden = YES;
}
}
}
@end
没有其他方法可以做到这一点。
编辑:上面的代码根据您的需要更新。
如果您始终只需要 1 个UILabel
,则可以重复使用相同的UILabel
. 好处是你使用的内存少了一点,而且你不需要管理所有的UILabel
s。缺点是您需要重新计算/存储坐标来放置UILabel
和存储的内容UILabel
(管理转移到这个)。
现在要求已经改变,下面的答案不再有效。但是,我仍然保留它,以防有人想要隐藏/显示所有标签。
我不认为你可以像 CSS 那样做,但我们可以使用一个技巧来避免遍历所有UILabel
s 到setHidden
.
你可以把所有的UILabel
s 作为一个透明的子视图UIView
。应该配置透明的size
and ,以便与不使用透明视图时的坐标相同(以避免混淆)。当你想隐藏所有s 时,你可以隐藏整个 transparent 。origin
UIView
UILabel
UIView
这有一个缺点是所有的UILabel
s 必须在现有视图的顶部或之下。这意味着您不能自由地将某些标签调整为位于某个元素的顶部,而将某些标签调整为位于现有视图上的某个元素的下方。您需要为此创建另一个视图,那里的事情会变得非常混乱。