Swift struct如何實現(xiàn)類似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,自定義類似實現(xiàn)

// 靜態(tài)屬性集合
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 {
    ...
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,186評論 3 119
  • 你周圍的所有人和事 都是你自己吸引過來的 因為同頻相吸 宇宙是一面鏡子 祂會以你最本質的現(xiàn)象來回應你 也就是你的心...
    夜游孤城閱讀 164評論 0 0
  • 綠茶應該是所有茶類里面品種最多,產地最多,消耗量最大的茶葉了吧。如果上瀏覽器搜索一下,隨隨便便幾十種,而且...
    A樂山茶客堂茶莊吳霞閱讀 379評論 0 0
  • 貴族 不只是 有錢 那么一點點 。。。。。。
    牙伯閱讀 418評論 0 3
  • 習作2 引起我反思的教學現(xiàn)象(活動): 學生習作不符合要求,怎樣指導學生寫作因類型的作文? 我的反思: 本次習作要...
    卜悠悠閱讀 244評論 0 0

友情鏈接更多精彩內容