Swift struct如何实现类似UIRectCorner.allCorners

demo2.png
demo1.png

场景需求,如图,长按cell弹出展示的View有的需要6个item,有的需要4个item

UIRectCorner定义

public struct UIRectCorner : OptionSet {
    
    public init(rawValue: UInt)
    
    public static var topLeft: UIRectCorner { get }
    
    public static var topRight: UIRectCorner { get }
    
    public static var bottomLeft: UIRectCorner { get }
    
    public static var bottomRight: UIRectCorner { get }
    
    public static var allCorners: UIRectCorner { get }
}

参考UIRectCorner,自定义类似实现

// 静态属性集合
struct MenuItemType : OptionSet {
    
    public var rawValue = 0  // 因为RawRepresentable的要求
    public static var copys = MenuItemType(rawValue : 1 << 0)

    public static var transmit = MenuItemType(rawValue : 1 << 1)

    public static var collect = MenuItemType(rawValue : 1 << 2)

    public static var delete = MenuItemType(rawValue : 1 << 3)

    public static var revoke = MenuItemType(rawValue : 1 << 4)

    public static var download = MenuItemType(rawValue : 1 << 5)
    
    public static var allCase: MenuItemType {
        
        return [.copys, .transmit, .collect, .delete, .revoke, .download]
    }
}

用法示例

if message?.msgDirection == .incoming {
    customMenu.itemType = [.copys,.transmit,.collect,.delete]
}else{
   // customMenu.itemType = [.copys,.transmit,.collect,.revoke,.delete]
    customMenu.itemType = .allCase
}

==========================
if itemType == .allCase {
    itemCount = 6
    containerView.addArrangedSubview(copyingButton)
    containerView.addArrangedSubview(transmitButton)
  .
}else if itemType.contains([.copys,.transmit,.collect,.delete,.revoke]){
    itemCount = 5
    containerView.addArrangedSubview(copyingButton)
    ....
}else {
    ...
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,065评论 3 119
  • 你周围的所有人和事 都是你自己吸引过来的 因为同频相吸 宇宙是一面镜子 祂会以你最本质的现象来回应你 也就是你的心...
    夜游孤城阅读 1,283评论 0 0
  • 绿茶应该是所有茶类里面品种最多,产地最多,消耗量最大的茶叶了吧。如果上浏览器搜索一下,随随便便几十种,而且...
    A乐山茶客堂茶庄吴霞阅读 2,738评论 0 0
  • 贵族 不只是 有钱 那么一点点 。。。。。。
    牙伯阅读 2,934评论 0 3
  • 习作2 引起我反思的教学现象(活动): 学生习作不符合要求,怎样指导学生写作因类型的作文? 我的反思: 本次习作要...
    卜悠悠阅读 1,639评论 0 0

友情链接更多精彩内容