如何用动画取消隐藏UIView

时间:2017-09-14 11:28:09

标签: ios objective-c animation uiview xcode8

我试图用动画取消隐藏 UIView ,但它对iphone模拟器5不起作用。取消隐藏在除5和5之外的所有其他模拟器上后,视图显示正常。

可能是什么原因。无法检测到问题。任何帮助?

 /*To unhide*/
    self.view4.hidden=NO;

    [UIView animateWithDuration:0.5 animations:^{
        self.view4.frame =  CGRectMake(2, 70, 70, 300);
        self.view4.alpha = 1.0f;
    } completion:^(BOOL finished) {
    }];

    //for showing view3
    self.view3.hidden=NO;

    [UIView animateWithDuration:0.5 animations:^{
        [self.view3 setFrame:CGRectMake(0, 303, 320, 95)];
        self.view3.alpha = 1.0f;
    } completion:^(BOOL finished) {
    }];

在按钮上单击视图3没有出现:(。view4看起来很好。我也试过通过更改帧值但没有进展。隐藏和减少alpha消失view3出现在屏幕上动画,但不是显示它。

iPhone6splus

iPhone5 Screen

1 个答案:

答案 0 :(得分:0)

问题是您正在使用的硬集坐标。如果您检查self.view.bounds(或self.view3.superview.bounds),您会注意到iPhone 5上的视图与iPhone 6上的维度相同iPhone 6Plus / 7Plus。您应该计算相对于self.view.bounds指标的视图位置。

// for showing view 3
self.view3.hidden=NO;
[UIView animateWithDuration:0.5 animations:^{
    CGRect parentBounds = self.view.bounds;
    CGRect destinationFrame = CGRectMake(0,parentBounds.size.width,parentBounds.size.height-95,95);
    [self.view3 setFrame:destinationFrame];
    self.view3.alpha = 1.0f;
} completion:^(BOOL finished) {
}];

视图现在应始终显示在父视图范围内,并在iPhone 5上可见。