Sie wissen, dass es in Cocoa dieses Ding gibt, zum Beispiel können Sie ein erstellen UIView
und tun:
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
Ich habe einen Brauch UIView
mit mehreren Zuständen, den ich folgendermaßen definiert enum
habe:
enum DownloadViewStatus {
FileNotDownloaded,
FileDownloading,
FileDownloaded
};
Für jede erstellte Unteransicht setze ich Folgendes tag
:subview1.tag = FileNotDownloaded;
Dann habe ich einen benutzerdefinierten Setter für den Ansichtsstatus, der Folgendes ausführt:
for (UIView *subview in self.subviews) {
if (subview.tag == viewStatus)
subview.hidden = NO;
else
subview.hidden = YES;
}
Aber was ich versuche zu tun , ist dies zuzulassen:
subview1.tag = FileNotDownloaded | FileDownloaded;
Also subview1
taucht meine in zwei Zuständen meiner Ansicht nach auf. Derzeit wird es in keinem dieser beiden Zustände |
angezeigt , da der Operator die beiden Aufzählungswerte zu addieren scheint.
Gibt es eine Möglichkeit, das zu tun?
(subview.tag == viewStatus)
Aussehen falsch zu mir. Sollte sein((subview.tag & viewStatus) != 0x0)
, es sei denn, Sie möchten nur die genaue Übereinstimmung überprüfen. In diesem Fall würden Sie überhaupt keine Bitmaske benötigen, sondern nur eine einfache alte Aufzählung. Siehe zweite Hälfte meiner Antwort.