194
votes

Getting this error in Swift 2.0.

Binary operator '|' cannot be applied to two UIViewAutoresizing operands

Here is the code:

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

Any idea what can be the problem? enter image description here

6

6 Answers

462
votes

The OptionSetType got an updated syntax for Swift 2.x and another update for Swift 3.x

Swift 3.x

view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

Swift 2.x

view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
30
votes

This are the differences between Swift 1.2 and 2:

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

// swift 2
view.autoresizingMask = [.FlexibleWidth, .FlexibleTopMargin]
6
votes

Try with xcode7-b6:

view.autoresizingMask = UIViewAutoresizing.FlexibleWidth.union(UIViewAutoresizing.FlexibleHeight)
5
votes

For Swift 3 Xcode 8 b1:

view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
1
votes

actual for swift 3.0.2:

view.autoresizingMask = [.layerWidthSizable, .layerHeightSizable]
-1
votes

use this code swift 2 with Xcode 7.2

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