Swift学习笔记 - 位移枚举的按位或运算

在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里面位移枚举的使用小结,如果写的有什么不对的欢迎大家补充,希望大家能学到,谢谢大家的阅读~

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...