有没有办法将所有UILabels设置为在Objective-C中隐藏?我正在根据if
声明显示和隐藏标签,觉得自己写的代码非常笨重。有没有办法选择所有的UILabels到setHidden:YES
a la CSS?设置全部UILabels隐藏
编辑:我需要一次可见其中一个,而不是一次全部隐藏。
谢谢!
有没有办法将所有UILabels设置为在Objective-C中隐藏?我正在根据if
声明显示和隐藏标签,觉得自己写的代码非常笨重。有没有办法选择所有的UILabels到setHidden:YES
a la CSS?设置全部UILabels隐藏
编辑:我需要一次可见其中一个,而不是一次全部隐藏。
谢谢!
如果您的所有标签躺在了同样的看法,你可以使用它的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
并存储UILabel
的内容(管理层将转移到此处)。
现在需求已经改变,下面的答案不再有效。但是,我仍然保留在那里,以防万一任何人想要隐藏/显示所有标签。
我不认为你可以像CSS这样做,但我们可以使用一个技巧,以避免必须遍历所有UILabel
s到setHidden
。
您可以将所有UILabel
s作为透明UIView
的子视图。透明UIView
的size
和origin
应配置为使坐标与不使用透明视图时相同(以避免混淆)。当你想隐藏所有的UILabel
时,你可以隐藏整个透明的UIView
。
这有一个缺点是所有的UILabel
都必须在现有的视图之上或之下。这意味着您不能自由地将某个标签调整到某个元素的顶部,并且某个标签位于现有视图的某个元素的下方。你需要为此目的创建另一个视图,那里的事情会变得相当混乱。
这看起来像它可能适合我想要做的。谢谢! – Sneagan