Sabes que en Cocoa existe esto, por ejemplo puedes crear un UIView
y hacer:
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Tengo una costumbre UIView
con varios estados, que he definido de enum
esta manera:
enum DownloadViewStatus {
FileNotDownloaded,
FileDownloading,
FileDownloaded
};
Para cada subvista creada, configuro su tag
:subview1.tag = FileNotDownloaded;
Luego, tengo un configurador personalizado para el estado de la vista que hace lo siguiente:
for (UIView *subview in self.subviews) {
if (subview.tag == viewStatus)
subview.hidden = NO;
else
subview.hidden = YES;
}
Pero lo que estoy tratando de hacer es permitir esto:
subview1.tag = FileNotDownloaded | FileDownloaded;
Entonces mi subview1
aparece en dos estados de mi vista. Actualmente, no aparece en ninguno de esos dos estados, ya que el |
operador parece agregar los dos valores de enumeración.
¿Hay una manera de hacerlo?
(subview.tag == viewStatus)
ve mal para mí. Debería serlo((subview.tag & viewStatus) != 0x0)
, a menos que solo desee verificar la coincidencia exacta. En cuyo caso, en primer lugar, no necesitaría una máscara de bits, sino una simple enumeración antigua. Vea la segunda mitad de mi respuesta.