2015-06-16 8 views
160

Ottenere questo errore in Swift 2.0.Operatore binario '|' non può essere applicato a due operandi UIViewAutoresizing

Operatore binario '|' Non può essere applicato a due operandi UIViewAutoresizing

Ecco il codice:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568)) 
addSubview(view) 
view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight 

Qualsiasi idea di quello che può essere il problema? enter image description here

+2

efficace lo stesso problema come in [Swift 2.0 - operatore binario “|” non può essere applicato a due UIUserNotificationType operandi] (http://stackoverflow.com/questions/30761996/swift -2-0-binario-operatore non può-essere-applicata-a-due-uiusernotificationtype). –

risposta

407

Il OptionSetType ottenuto una sintassi aggiornato per 2.x Swift e un altro aggiornamento per Swift 3.x

3.x Swift

view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

Swift 2.x

view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] 
+24

Prima di tutto, grazie! Ma perché diavolo devo venire qui, non è possibile che lo strumento di migrazione lo rilevi e lo risolva da solo? xD –

+6

Ascolta sentire. Dai Apple .... – MattD

+2

Questa è una scelta di sintassi bizzarra, imo. Cosa succede se si desidera creare una matrice con più valori enum? '+' or '|' avrebbe avuto più senso per me. – devios1

6

Provare con xcode7-b6 :

view.autoresizingMask = UIViewAutoresizing.FlexibleWidth.union(UIViewAutoresizing.FlexibleHeight) 
+1

Questo è corretto nel mio caso, usando swift 2 in Xcode 7 beta 6. La risposta di keithbhunter non ha funzionato per me Grazie –

30

Questo sono le differenze tra Swift 1.2 e 2:

// swift 1.2 
view.autoresizingMask = .FlexibleWidth | .FlexibleTopMargin 

// swift 2 
view.autoresizingMask = [.FlexibleWidth, .FlexibleTopMargin] 
-1

uso questo codice swift 2 con Xcode 7,2

self.view.autoresizingMask = [.FlexibleRightMargin, .FlexibleLeftMargin, .FlexibleBottomMargin, .FlexibleTopMargin] 
5

Per Swift 3Xcode 8 b1:

view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 
+0

@Pushpa: curioso, oltre ad aggiungere la parola "Per" all'inizio della mia risposta, hai modificato/modificato qualcos'altro che io grazie –

+2

Sì, ha inserito il codice all'interno del blocco di codice :) E sì, questa risposta è già stata pubblicata con Swift 2. – Pushpa

1

actua l per rapida 3.0.2:

view.autoresizingMask = [.layerWidthSizable, .layerHeightSizable]