iOS7 - 为什么CGAffineTransform在iOS 8上运行正常但在iOS7上运行不正常?

时间:2014-10-07 20:28:33

标签: objective-c xcode ipad ios7 ios8

我在iOS7上使用CGAffineTransformMakeTranslation时遇到问题。在运行iOS7和iOS8时,我使用CGAffineTransformMakeTranslation的视图将处于不同的位置。为什么这样,我做错了什么?

我有一个观点,我称之为“hud”,即其parentView的长度和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从一开始就隐藏起来,并在选择图像时向上滑动: Hud Hidden Hud Showing

然而,当在iOS7设备上运行时,hud不是我期望的那样: Hud ios7 "hidden" Hud ios7 showing

如果我注释掉所有代码 - (void)showHud:(BOOL)显示hud将位于parentView的底部,我希望它在7和8上。

1 个答案:

答案 0 :(得分:3)

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