2017-10-05 15 views
0

私はスクロール可能なビューを作成しようとしています。そのビューコントローラにはNavbarも含まれています。私の目標は、そのビュー内のタイトルがnavbarに触れると、私のビューのサイズを変更することです。私はどうすればいいのですか?ラベルがナビゲーションバーに接触するかどうかを検出します

これは、(ナビゲーションバーがちょうど透明であることに注意してください)のように私の見解がどのように見えるかです:タイトル衝突後

enter image description here

私が欲しいもの:

enter image description here

私がいることを知っています私はscrollViewDidScrollデリゲート機能でそれを達成することができますが、どのように?

+1

の方法は、* * ... *「今、私の目標は、私の見解のサイズを変更することである」「しかし、これは単なるビューのサイズを変更します」。 – LinusGeffarth

答えて

1

さてあなたはconvertRectを使用してラベルの位置を追跡することができます:*

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
     let labelTop = label.rectCorrespondingToWindow.minY 
     let navBottom = self.navigationController?.navigationBar.rectCorrespondingToWindow.maxY 
     if navBottom == labelTop { 
      // do what you want to do 
     } 
    } 

extension UIView{ 
    var rectCorrespondingToWindow:CGRect{ 
     return self.convert(self.bounds, to: nil) 
    } 
} 
関連する問題