2014-10-07 74 views
6

我在iOS7上使用CGAffineTransformMakeTranslation時遇到問題。我使用CGAffineTransformMakeTranslation的視圖在運行iOS7和iOS8時處於不同的位置。爲什麼這是我做錯的?iOS7 - 爲什麼CGAffine轉換在iOS8上正常工作,但不在iOS7上正常工作?

我有一個觀點,我稱之爲「hud」,它是它的父視圖的長度和125.0高。我使用自動佈局,這裏是我的故事板的截圖,所以你可以看到我是如何設置約束的。容器視圖是照片的集合視圖。

Storyboard

我有「HUD」隱藏與馬上向下轉換,並且在選擇照片的時候會滑回成圖。

-(void)showHud:(BOOL)show 
{ 
    NSLog(@"Frame Height: %f", hud.frame.size.height); 

    if (show && !hudSelectionMode) 
    { 
     [UIView animateWithDuration:0.5 delay:0 options:0 
        animations:^{ 
         hud.transform = CGAffineTransformMakeTranslation(0, 0); 
         hud.alpha = 0.8f; 
        } 
        completion:^(BOOL finished){ 
        } 
    ]; 

    } 
    else if (!show && !hudSelectionMode) 
    { 

    [UIView animateWithDuration:0.5 delay:0 options:0 
        animations:^{ 
         hud.transform = CGAffineTransformMakeTranslation(0, hud.frame.size.height); 
         hud.alpha = 0.8f; // will be 0.0 when not testing 
        } 
        completion:^(BOOL finished){ 
        } 
    ]; 


    } 

} 

這裏的問題是 在iOS8上這個完美的作品的HUD是從一開始就隱藏起來,當選擇的圖像會向上滑動:在iOS7設備上運行時 Hud Hidden Hud Showing

然而hud不是我期望的那樣: Hud ios7 "hidden" Hud ios7 showing

如果我註釋掉了 - (void)showHud中的所有代碼:(BOOL)顯示hud將坐在parentView的底部,我期望它在7和8上。

+1

您最近是否在Interface Builder中啓用了AutoLayout或SizeClasses? – Fogmeister 2014-11-03 13:42:43

+1

禁用自動佈局爲我解決這個問題 – 2015-01-13 15:15:41

+1

我的經驗和@MikeBryant一樣 - 關掉自動佈局,恢復到老派的自動佈局解決了這個問題。 – hsoi 2015-02-02 23:16:17

回答

2

在iOS7上,您需要將翻譯值乘以設備的scaleFactor。在iOS8上,這似乎是自動完成的,但不是在iOS7上。

+0

非常感謝! :)我很想知道爲什麼 – sachadso 2015-08-11 08:47:16

相關問題