Вы знаете, что в Cocoa есть такая вещь, например, вы можете создать 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)
, если только вы не хотите просто проверить точное совпадение. В этом случае вам не понадобится битовая маска, а просто старое простое перечисление. Смотрите вторую половину моего ответа. - person Regexident   schedule 23.04.2013