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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang631106979/article/details/52369557

Swift 高级运算符(二十)

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

Swift-位运算符

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

iOS-位移枚举

枚举&位移枚举 之前,我们一般都采用C语言的方式定义枚举,这种枚举可以称为普通的枚举。 typedef enum{ DirectionTypeUp, DirectionTypeLef...
  • u014205965
  • u014205965
  • 2015-05-22 10:09:06
  • 1856

位移枚举

开发中,我们经常看到很多的位移枚举,一般来说,见到位移枚举,我们都是可以写多个的,用 | 来隔开,就能识别。其实按照习惯的惯例,我们通常看到枚举,看不懂,就写个0,其实这样不好,还是要理解一下枚举的内...
  • yi_zz32
  • yi_zz32
  • 2015-11-26 12:13:47
  • 3467

swift 传入多个枚举类型 '|'

看以前的oc代码 很多传入多个枚举类型的时候会用| , 比如:UIRectCorner corners = UIRectCornerTopRight | UIRectCornerBottomRig...
  • u010586842
  • u010586842
  • 2015-09-08 08:56:15
  • 2607

OC中的位移枚举

想要了解位移枚举,得先熟悉位运算符。主要是两个,’ | ‘和 ‘ & ‘。和逻辑运算符’ || ‘ ‘ && ‘不同,位运算符是对二进制数字按位进行与或操作。比如2&3,就是把2和3先转换为2进制数1...
  • qq_30515765
  • qq_30515765
  • 2016-06-16 10:05:22
  • 655

二十二 Swift3.0之 枚举

/* Swift枚举: Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法 格式: enum Method{ case 枚举值 }...
  • gezi0630
  • gezi0630
  • 2017-04-08 17:01:41
  • 3718

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

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

swift ios 平移动画(8种方式)

1.前言转载请注明出处 http://blog.csdn.net/wangguoyang429883793/article/details/50353996 以平移为例子,总结了一下动画的实现方...
  • wangguoyang429883793
  • wangguoyang429883793
  • 2015-12-29 19:28:11
  • 2848

swift enum高级用法

本文是一篇详细且具有实战意义的教程,涵盖几乎所有枚举(Enum)知识点,为你解答Swift中枚举的应用场合以及使用方法。 和switch语句类似,Swift中的枚举乍看之下更像是C语言中枚举的进阶版...
  • itchosen
  • itchosen
  • 2017-08-31 16:40:00
  • 2291
收藏助手
不良信息举报
您举报文章:Swift学习笔记 - 位移枚举的按位或运算
举报原因:
原因补充:

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