Ви знаєте, що в какао є ця річ, наприклад, ви можете створити 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)
, якщо ви не хочете просто перевірити точність відповідності. У цьому випадку вам спочатку не знадобиться бітова маска, а просто звичайний старий перелік. Дивіться другу половину моєї відповіді.