您知道可可里有这个东西,例如您可以创建一个 UIView并执行:
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
我有一个UIView具有多个状态的自定义,enum这样的:
enum DownloadViewStatus {
FileNotDownloaded,
FileDownloading,
FileDownloaded
};
对于每个创建的子视图,我设置其tag:subview1.tag = FileNotDownloaded;
然后,我为视图状态创建了一个自定义设置器,它可以执行以下操作:
for (UIView *subview in self.subviews) {
if (subview.tag == viewStatus)
subview.hidden = NO;
else
subview.hidden = YES;
}
但是我想做的是允许这样做:
subview1.tag = FileNotDownloaded | FileDownloaded;
所以我subview1以两种状态出现。目前,它在这两个州中均未显示|操作员似乎将两个枚举值相加。
有没有办法做到这一点?
(subview.tag == viewStatus)表情对我不好。应该是((subview.tag & viewStatus) != 0x0),除非您只想检查完全匹配。在这种情况下,您首先不需要位掩码,而只是一个普通的旧枚举。请参阅我的答案的下半部分。