2016-02-02 15 views
1

我正在嘗試將我的view(它是視圖層次結構中的任何位置)變成全屏。 爲此,我將view添加到UIWindow實例。有點像convertConstraintsToView:?

p.s.我使用的砌築

// replacing superview 
[[UIApplication sharedApplication].keyWindow addSubview:self]; 

// fullscreen constraints 
[self remakeConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self.superview); 
}]; 

[UIView animateWithDuration:kAnimationDuration 
       animations:^{ 
        [self layoutIfNeeded]; 
} completion:^(BOOL finished) { 

}]; 

問題,我這裏是當視圖添加到窗口它不保持相同的位置,因爲它是是,我認爲之前,正確的行爲,但看起來很奇怪。

動畫從錯誤的地方開始。

它不是難以使用幀通過做才達到:

  • 的視圖轉換矩形到窗口(convertRect:toView:
  • 移動視圖,以窗口(這樣視圖保持相同的位置)
  • 動畫視圖的框架,以成爲全屏

我如何通過autolayout來實現? (或我仍然必須使用框架?)

回答

0

你基本上有問題的原因和解決方案。如果你沒有改變superview,那麼它不會是一個問題。

按照描述獲取並轉換框架,但不要設置框架。使用框架設置初始約束。即使移動到新的超視圖(因此座標系),視圖也會保持原始位置。

現在將這些約束條件的常量設置爲零。這會將視圖的邊緣畫出來以符合超視圖邊緣。

+0

這就是我也認爲,似乎沒有其他方式 – Injectios

+0

還有其他方式,如你通過全屏查看原始視圖和框架的圖像,並讓它動畫化圖像,有很多選項... – Wain

+0

呃...我的意思是沒有正常的:) – Injectios