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