如何添加像动画一样的Instagram,在Swift 2中向下滚动最小化标题“Instagram”?

时间:2016-03-01 13:49:55

标签: swift uiscrollview cgrectmake

我正在尝试在我的应用中添加类似Instagram的动画,最小化标题“Instagram”并将显示移动到整个页面。

在我的应用程序中,我有两个UILabel - chapterNameNumberLabel和chapterNameLabels以及一个UITextView。在UITextView中滚动时,我希望chapterNameNumberLabel和chapterNameLabels最小化,并且整个页面要用UITextView内容填充。

我尝试过以下内容:(使用答案中提到的指针Finding the direction of scrolling in a UIScrollView?

viewDidLoad()

中获得以下内容
 xLabel = self.chapNameNumberLabel.center.x;
    yLabel = self.chapNameNumberLabel.center.y;
    widthLabel = self.chapNameNumberLabel.frame.width;
    heightLabel = self.chapNameNumberLabel.frame.height;

    xNameLabel = self.chapterNameLabel.center.x;
    yNameLabel = self.chapterNameLabel.center.y;
    widthNameLabel = self.chapterNameLabel.frame.width;
    heightNameLabel = self.chapterNameLabel.frame.height;

并调用以下方法:

func scrollViewDidScroll(scrollView: UIScrollView) {

    if(self.lastContentOffset > 0 ){
        if (self.lastContentOffset > scrollView.contentOffset.y) {
            //print("Up");

            UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
                self.chapNameNumberLabel.frame = CGRectMake(self.xLabel - 100, self.yLabel - 10, self.widthLabel, self.heightLabel);
                self.chapterNameLabel.frame = CGRectMake(self.xNameLabel - 140, self.yNameLabel - 10 , self.widthNameLabel, self.heightNameLabel);
                }, completion: nil)
        }
        else if (self.lastContentOffset < scrollView.contentOffset.y){
            print("Down");

            UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
                self.chapNameNumberLabel.frame = CGRectMake( 100 , -10, 5, 5);
                self.chapterNameLabel.frame = CGRectMake(50, -10, 5, 5);

                }, completion: nil);
        }

    }
    // update the new position acquired
    self.lastContentOffset = scrollView.contentOffset.y

}

动画没问题,但我面临的问题是:

  1. 我无法在标签上获得'字体大小最小化'效果。我的应用程序中的标签只是消失而不减小字体大小。什么样的动画类型应该用于在滚动时实现这种字体大小最小化?

  2. 此外,我在向下滚动时设置的值(在scrollViewDidScroll中)是

  3. self.chapNameNumberLabel.frame = CGRectMake( 100 , -10, 5, 5); self.chapterNameLabel.frame = CGRectMake(50, -10, 5, 5);以及向上滚动是试验和错误值。当我左右旋转屏幕时(在模拟器上),标签没有正确对齐。有人可以告诉我如何计算这个,以便它适用于所有的屏幕方向?

    我使用过Swift 2,自动布局。

0 个答案:

没有答案