標籤:
在OC裡面我們經常遇到一些枚舉值可以多選的,需要用或運算來把這些枚舉值連結起來,這樣的我們稱為位移枚舉,但是在swift語言裡面卻不能這麼做,下面來講解一下如何在swift裡面使用
OC的位移枚舉的區分
//位移枚舉typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
//普通枚舉typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
OC位移枚舉的使用
OC裡面位移枚舉的使用一般用按位或運算子,也就是 | 運算子。
//OC裡位移枚舉的定義
enum UIViewAnimationOptions option = UIViewAnimationOptionRepeat | UIViewAnimationOptionLayoutSubviews;
//OC裡普通枚舉的定義
enum UIViewAnimationTransition option = UIViewAnimationTransitionFlipFromLeft;
swift的位移枚舉的區分
//位移枚舉public struct UIViewAutoresizing : OptionSetType {
public init(rawValue: UInt)
public static var None: UIViewAutoresizing { get }
public static var FlexibleLeftMargin: UIViewAutoresizing { get }
public static var FlexibleWidth: UIViewAutoresizing { get }
public static var FlexibleRightMargin: UIViewAutoresizing { get }
public static var FlexibleTopMargin: UIViewAutoresizing { get }
public static var FlexibleHeight: UIViewAutoresizing { get }
public static var FlexibleBottomMargin: UIViewAutoresizing { get }
}
//普通枚舉public enum UIViewAnimationTransition : Int {
case None
case FlipFromLeft
case FlipFromRight
case CurlUp
case CurlDown
}
swift位移枚舉的使用
swift裡面位移枚舉的用法跟OC就完全不一樣了,當你去用按位或的運算子時系統會報錯,在swift裡面應該用數組來表示:
//swift裡面位移枚舉的定義
let option:UIViewAnimationOptions = [.Repeat, .LayoutSubviews]
//swift裡面普通枚舉的定義
let option:UIViewAnimationTransition = .FlipFromLeft
以上就是關於swift裡面位移枚舉的使用小結,如果寫的有什麼不對的歡迎大家補充,希望大家能學到,謝謝大家的閱讀~
文章來源:極客頭條
Swift學習之位移枚舉的按位或運算