0

UIScrollViewを作成して、ヘッダー付きUIViewControllerに表示しました。私のscrollViewDidScroll()には、ヘッダの高さを減らすコードがいくつかあります。しかし、それが実行されると、ヘッダービュー内のすべての要素(ラベル)が変更されます。寸法を固定しておく方法はありますか? enter image description here"scrollViewDidScroll"関数で寸法を変更しないようにUIView要素を修正しました

scrollViewDidScroll()機能はここにある:

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

     var labelAlpha = 4 * scrollView.contentOffset.y/scrollView.frame.height 
     labelAlpha = max(0, labelAlpha) 
     labelAlpha = min(1, labelAlpha) 
     let parent = self.parent as? ScrollParentViewController 
     var viewScale = 1.0 - 4 * scrollView.contentOffset.y/scrollView.frame.height 
     viewScale = max(0.5, viewScale) 
     parent?.redView.transform = CGAffineTransform(scaleX: 1, y: viewScale) 
     parent?.redView.frame.origin.y = 0 
     parent?.whiteLabel.alpha = labelAlpha 

    } 
+0

親ビューのサイズを変更し、子ビューを固定高さにする必要があることを意味しますか? – GoCrazy

+0

はい、実際には、その子のサイズを変更せずにビューを変換したいと考えています。 @GoCrazy –

+0

スクロールビューのヘッダをどのように作成しましたか?ストーリーボード/ xib経由またはプログラムによる – zero3nna

答えて

0

は、最後に私の答えを見つけました。必要に応じて使用するように投稿します。この場合、変換を使用すべきではありません。 view.frame.size.heightで作業できます。ビューの高さのサイズは、その値が変更されるため、最初に変数に保存する必要があります。 ので(私の場合は、その名前がScrollParentViewControllerである)あなたのHeaderViewControllerに追加:

var height: CGFloat! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    height = redView.frame.height 
} 

あなたはあなたのscrollViewDidScroll()でこの変数を使用することができます。助けのため

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    var viewScale = 1.0 - 4 * scrollView.contentOffset.y/scrollView.frame.height 
    viewScale = max(0.5, viewScale) 
    let parent = self.parent as? ScrollParentViewController 
    parent?.redView.frame.size.height = (parent?.height)! * viewScale 
} 

感謝を。

関連する問題