2016-04-21 45 views
-1

我正在嘗試重新實施類似Apple Watch朋友選取器的操作。我有兩個UIViews,都是半角高度的圓角半徑,因此它們顯示爲圓形。我如何計算它們重疊的位置並僅顯示該部分。我的用戶界面在第一張圖片中,第二張包含所需的行爲。預先感謝您的幫助? Current UIApple Watch UI如何在與其他iOS重疊時顯示UIView?

回答

1

對於每個帶首字母的圓圈,您可以有頂視圖 - 未選中狀態 - 和底視圖 - 選中狀態。然後,您可以以跟蹤點的尖端的圓形形狀顯示可移動視圖。當該視圖與任何外部圓相交時,您將創建一個與該不可見視圖的圓角邊界相等的蒙版。

例如:

if CGRectIntersectsRect(self.movableView.frame, self.topView.frame) 
     { 
      self.topView.layer.mask = nil 
      let shapeLayer = CAShapeLayer() 
      let rect = self.topView.convertRect(self.movableView.bounds, fromView: self.movableView) 
      let path = UIBezierPath(ovalInRect: rect) 
      let maskPath = CGPathCreateMutable() 
      CGPathAddRect(maskPath, nil, self.view.frame) 
      CGPathAddPath(maskPath, nil, path.CGPath) 
      shapeLayer.path = maskPath 
      shapeLayer.fillRule = kCAFillRuleEvenOdd 
      self.topView.layer.mask = shapeLayer 
     } 

爲了避免過多的命中檢測你應該保持當前選擇的視圖的軌道和只檢查用於與所述視圖中的選擇的視圖,所選擇的視圖緊接在前的交點,和視圖以下選定的視圖。如果你有興趣,我已經創建了一個基本的掩碼example