iOS7 - 为什么CGAffine转换在iOS8上正常工作,但不在iOS7上正常工作?

问题描述:

我在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 HiddenHud 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

在iOS7上,您需要将翻译值乘以设备的scaleFactor。在iOS8上,这似乎是自动完成的,但不是在iOS7上。

+0

非常感谢! :)我很想知道为什么 – sachadso 2015-08-11 08:47:16