2014-10-27 43 views
0

我有一個容器視圖控制器。它將另一個控制器添加爲子視圖控制器,以及其視圖來查看層次結構。更改視圖變換更改iOS 7上的視圖位置,但不是iOS 8

所以現在我有:

UIView *self.view //main view 
UIView *childView //child view controller's view 

我也有UIImageView *imageView爲孩子childView。 ImageView從其左邊,右邊和頂端用一些常量(12點)約束到它的父項。

當我點擊按鈕我用下面的代碼滑子視圖:

- (void)swipeDown:(UISwipeGestureRecognizer *)sender 
{ 
    if (sender.state == UIGestureRecognizerStateRecognized && !self.menuOpened) { 

     [UIView animateWithDuration:0.2 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ 

      self.childView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 0, 120); 

     } completion:^(BOOL finished) { 

     }]; 
    } 
} 

所以這個問題 - 動畫開始向右前,imageView移動其位置了一些量。 這可以通過在動畫之前和之後將約束更改爲某個任意數量來抵消,但這是一種骯髒的黑客攻擊,因爲它需要不同設備的不同值。

它應該是什麼樣子,實際上適用於iOS 8:

enter image description here

什麼它看起來像在iOS 7(設置標籤是不相關的,請注意相關圖像的位置導航欄) :

enter image description here

同樣,在iOS 8,因爲它應該,沒有一個子視圖的移動變換的作品。在查看變換更改時,iOS 7子視圖失去控制。我如何解決這個問題?

+1

好吧,'AutoLayout'不能與'CGAffineTransform'一起使用。看看這個http://stackoverflow.com/questions/12943107/how-do-i-adjust-the-anchor-point-of-a-calayer-when-auto-layout-is-being-used/14105757 #14105757 – 2014-10-27 14:02:44

+0

@BartekChlebek巴爾泰克你能回答,請 – Dvole 2015-08-26 10:37:42

回答