iOS7 - 为什么CGAffineTransform在iOS8上正常工作但在iOS7上却不行?

6
我在使用CGAffineTransformMakeTranslation时遇到问题,它在iOS7和iOS8上运行时会将视图移动到不同的位置。这是为什么?我做错了什么吗?
我有一个名为“hud”的视图,其长度与其父视图相同,高度为125.0。我正在使用自动布局,下面是我的故事板截图,您可以看到我的限制条件设置。容器视图是照片的集合视图。
我通过向下变换来隐藏“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从一开始就被隐藏了,当选择图片时会滑动出来: Hud Hidden Hud Showing 然而,在iOS7设备上运行时,hud不在我期望的位置上: Hud ios7 "hidden" Hud ios7 showing 如果我注释掉-(void)showHud:(BOOL)show中的所有代码,那么hud将停留在父视图的底部,这是我在7和8上都期望的位置。

1
你最近在Interface Builder中启用了AutoLayout或SizeClasses吗? - Fogmeister
1
禁用自动布局对我有帮助。 - Mike Bryant
1
我的经验和 @MikeBryant 一样 - 关闭自动布局,回归传统的自适应大小方式也解决了这个问题。 - hsoi
1个回答

3

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


非常感谢! :) 我很想知道为什么。 - sachadso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接