代码之家  ›  专栏  ›  技术社区  ›  Kashif Jilani

基于ios中的位置对uiview子视图按x顺序排序

  •  0
  • Kashif Jilani  · 技术社区  · 6 年前

    我需要找到uitabbarbutton位置,我已经实现了获取tabbutton的所有值和传递索引的方法。然而,在子视图中,初始的tabbar按钮获取是不排序的。下面是我的代码。请帮我点菜

      func frameForTabAtIndex(index: Int) -> CGRect {
        guard let tabBarSubviews = tabBarController?.tabBar.subviews else {
          return CGRect.zero
        }
        var allItems = [UIView]()
        for tabBarItem in tabBarSubviews {
          if tabBarItem.isKind(of: NSClassFromString("UITabBarButton")!) {
            allItems.append(tabBarItem)
          }
        }
    
        let item = allItems[index]
        return item.superview!.convert(item.frame, to: view)
      }
    
    
    
     - 0 : <_UIBarBackground: 0x7ff96060ccb0; frame = (0 0; 414 49); userInteractionEnabled = NO; layer = <CALayer: 0x6040000395a0>>
      - 1 : <UITabBarButton: 0x7ff96060a4b0; frame = (106 1; 99 48); alpha = 0.25; opaque = NO; layer = <CALayer: 0x604000039da0>>
      - 2 : <UITabBarButton: 0x7ff96060bb90; frame = (209 1; 100 48); alpha = 0.25; opaque = NO; layer = <CALayer: 0x604000039bc0>>
      - 3 : <UITabBarButton: 0x7ff96060c420; frame = (313 1; 99 48); opaque = NO; layer = <CALayer: 0x604000039ae0>>
      - 4 : <UITabBarButton: 0x7ff961b39160; frame = (2 1; 100 48); alpha = 0.25; opaque = NO; layer = <CALayer: 0x60c000229f80>>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Bhavin Kansagara    6 年前

    你可以对数组排序 大蒜素 具体如下:

     allItems.sort { $0.frame.origin.x < $1.frame.origin.x }
    

    这将为您提供排序数组,并且由于它是可变的,因此它将按照 uitabbarbutton的价值

    在代码上方,从数组中获取项。

     let item = allItems[index]
    

    希望有帮助