2017-09-05 53 views
0

我有兩個視圖,videoView(它是mainView)和subVideoView(它是mainView的子視圖)。無法在動畫過程中將mainview旁邊的子視圖最小化

我想盡量減少兩個視圖同時使用動畫,如下面的代碼所示。我能夠最小化videoView(即mainView)而不是subVideoView。

但是,當我隱藏用於最小化videoView(即mainView)的代碼時,我能夠最小化subVideoView。

我相信它必須用我的動畫方式做點事情。

有人可以請教,我可以如何在同一時間最小化兩個視圖(按比例)與動畫同時結束以下結果。

enter image description here

現有代碼結果 enter image description here

func minimiseOrMaximiseViews(animationType: String){ 


     UIView.animate(withDuration: 0.5, delay: 0, options: [], 

      animations: { [unowned self] in 
       switch animationType { 
       case "minimiseView" : 

        // Minimising subVideoView 

        self.subVideoView.frame = CGRect(x:  self.mainScreenWidth - self.minSubVideoViewWidth - self.padding, 
                 y:  self.mainScreenHeight - self.minSubVideoViewHeight - self.padding, 
                 width: self.minSubVideoViewWidth, 
                 height: self.minSubVideoViewHeight) 

        // Minimising self i.e videoView 

        self.frame = CGRect(x:  self.mainScreenWidth - self.videoViewWidth - self.padding, 
             y:  self.mainScreenHeight - self.videoViewHeight - self.padding, 
             width: self.videoViewWidth, 
             height: self.videoViewHeight) 

        self.layoutIfNeeded() 

       case "maximiseView": 

        // Maximising videoView 

        self.frame = CGRect(x: 0, y: 0, width: self.mainScreenSize.width, height: self.mainScreenSize.height) 

        // Maximising subVideoView 

        self.subVideoView.frame = CGRect(x:  self.mainScreenWidth - self.maxSubVideoViewWidth - self.padding, 
                 y:  self.mainScreenHeight - self.maxSubVideoViewHeight - self.padding - self.buttonStackViewBottomPadding - buttonStackViewHeight, 
                 width: self.maxSubVideoViewWidth, 
                 height: self.maxSubVideoViewHeight) 
       default: 
        break 
} 

回答

0

根據您的要求添加子視圖中MAINVIEW並設置

mainView.clipsToBounds = true 

和在minimiseOrMaximiseViews方法中,您只需要管理YmainView用於顯示和隱藏。

+0

我想最小化視圖,即減少視圖大小。我不想clipToBounds,因爲它只是剪輯,並不會減少視圖大小。 – user44776

+0

@moritz,添加了詳細的圖像,以更好地解釋問題 – user44776

0

當我將兩個視圖(videoView和subVideoView)都設置爲子視圖(即UIApplication.shared.keywindow)時,我可以使用動畫同時最小化兩個視圖。

0

除非我錯過了一些東西,否則通過動畫videoView(主視圖)的transform屬性可以更輕鬆地實現此類動畫。您將需要連接縮放和平移轉換,因爲縮放默認應用於視圖的中心。

訣竅是,對視圖應用變換會自動影響其所有子視圖,例如,對視圖應用縮放轉換可縮放視圖及其所有子視圖。

要製作一個反向動畫,只需在動畫塊中設置videoView.transform = CGAffineTransformIdentity即可。

警告:您應該小心,雖然,與轉換視圖的frame屬性。 frame財產是合成的,並從bounds,centertransform派生。這意味着設置視圖的frame將重置其transform屬性。換句話說,如果你使用transform來操縱視圖,你很可能要避免直接設置它們的框架。