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

原创 2016年08月30日 15:16:46

在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 高级运算符(二十)

高级运算符 1.位运算符 1.1按位取反 前置运算符 ~ 对一个操作数的每一位都取反,后紧跟操作数,不加空格 let initialBits: UInt8 = 0b00001111 ...
  • huangchentao
  • huangchentao
  • 2014年06月20日 17:42
  • 4482

Objective-C 枚举 中位运算 的使用

前言 Enum,也就是枚举,从C语言开始就有了,C++、Java、Objective-C、Swift这些语言,当然都有对应的枚举类型,功能可能有多有少,但是最核心的还是一个—-规范的定义代码中的状态...
  • shaobo8910
  • shaobo8910
  • 2017年02月10日 19:00
  • 500

Swift-位运算符

// // main.swift // Swift-位运算符 // // Created by dingkang on 16/6/8. // Copyright © 2016年 di...
  • Re1entlessF1ow
  • Re1entlessF1ow
  • 2016年06月07日 21:22
  • 411

Swift 高级运算符

除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算。   不同于C语言中的数值计算,Swift的数值计算默认是不可溢...
  • sqc3375177
  • sqc3375177
  • 2014年06月12日 23:31
  • 2479

iOS:枚举和位运算

今天对iOS的枚举和位运算做一下整理,主要内容如下: 1.iOS中的两个枚举类型:NS_OPTIONS,NS_ENUM 2.枚举使用位运算的原因 3.位运算介绍和扩展 一.枚举类型 ...
  • zhichayibu2012
  • zhichayibu2012
  • 2015年02月24日 15:53
  • 1353

使用纯swfit写的各种极简风格的指示器,使用超级简单方便

  • 2015年07月01日 17:45
  • 34KB
  • 下载

swift 学习笔记(10)-三目运算符

三目运算符 三目运算符由问号和冒号组成,先是一个表达式,判断语句,如果成立,就执行冒号前面的,如果不成立就执行冒号后面的,一对二的选择判断语句比如:一个小伙得了一百分let score = 100如...
  • u010474185
  • u010474185
  • 2016年11月14日 16:56
  • 2059

九 Swift3.0之 运算符

/* 算术运算符: 除了取模, 其它和OC一样, 包括优先级 + - * / % ++ -- */var result = 10 + 10 result = 10 * 10 result = 10 -...
  • gezi0630
  • gezi0630
  • 2017年03月28日 09:23
  • 772

Swift 学习之二十一:?和 !(详解)

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, 也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:...
  • woaifen3344
  • woaifen3344
  • 2014年06月12日 14:38
  • 30612

Swift 下开启warning提示方法

Swift 下开启warning提示方法OC中可以通过#warning方法来提醒自己将来需要注意的地方,但是在目前Xcode版本中没有这样的功能产生黄色警告这时候就需要我们自己手动去让Xcode产生这...
  • ZJJeffery
  • ZJJeffery
  • 2015年05月11日 21:21
  • 2081
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift学习笔记 - 位移枚举的按位或运算
举报原因:
原因补充:

(最多只允许输入30个字)