QQ粘性布局

  • 按鈕button

    • 自定義button
    • 設置圓角半徑cornerRadius
    • 取消高亮狀態重寫setHighlighted:方法
  • 按鈕移動的時候按鈕可以跟著走

    • 添加手勢
    • 獲取偏移量
    • 清零
  • 大圓下面有一個小圓

    • 根據大圓的拖動,小圓半徑在減小
    • 小圓加到view上面
  • 插入一個view

    • self.superView = insertSubview:belowSubview:self
  • 根據兩個圓的距離,改變小圓的半徑

  • 求兩個圓之間的距離

    • 寫一個方法返回兩個圓之間的距離

    • sqrt(offsetXoffsetX + offsetYoffsetY)

    • 注意:transform修改的是frame,它并沒有修改center

    • 直接修改frame,center會發生變化,UIView的center其實是它內部layer的position

      • CGPoint center = self.center;
      • center.x += transP.x
      • center.y += transP.y
      • self.center = center
  • 縮放小圓

    • 獲取小圓半徑(最原始的半徑)
    • 修改小圓的寬高(大圓的半徑等于小圓最初的半徑)
    • 修改小圓的圓角半徑
  • 粘性計算圖

    • 描述路徑,填充路徑
    • 已知
      • 小圓,大圓的center
      • x軸,y軸方向的偏移量
      • 兩個圓之間的距離
    • 計算角度
      • cos sin
    • A B C D
    • O P 控制點
  • 描述中間的路徑

    • 寫一個方法,根據兩個圓,描述一個不規則的路徑,返回一個路徑
    • x1 y1
    • x2 y2
    • d (d<=0 返回nil)
    • r1 r2
    • AB CD 直線
    • 控制點O P
    • BC DA 曲線
  • 形狀圖層

    • 可以根據路徑,生成一個形狀
    • 懶加載創建CAShapeLayer
    • CAShapeLayer也是CALayer的子層,不需要設置位置和尺寸
    • shapeLayer.path = path.CGPath
    • insertSublayer:atIndex:
    • fillColor
  • 業務邏輯處理

    • 移動大于某個值的時候,shapeLayer消失,小圓消失
      • shapeLayer removeFromSuperlayer
      • 小圓隱藏的時候,不需要描述路徑
      • shapeLayer不能設置隱藏,會有隱式動畫
    • 移動手指松開時距離小于某個值,復位操作,否則播放一個??
      • 復位:大圓回到小圓的位置
        • self.center = self.smallC.center
        • 顯示小圓 hidden = NO;
        • remove shapeLayer
      • ??:序列幀動畫
        • 創建UIImageView
        • frame 大小等于大圓大小
        • 把imageView加到大圓上面
        • animationImages
        • startAnimating
        • 回到原來的位置才??怎么辦?self.view.translatesAutoresizingMaskIntoConstrants = NO;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容