0

我想在加载我的应用程序时隐藏我的 UIPickerView。但稍后它会在点击按钮时显示/隐藏。

所以,我决定把这段代码放在 viewDidLoad 上:

UIPickerView *pickerView = [[UIPickerView alloc] init];
float pvHeight = pickerView.frame.size.height;
float y = _screen.bounds.size.height - (pvHeight * -2);
_memberList.frame = CGRectMake(0 , y, pickerView.frame.size.width, pvHeight);

但是当我运行我的应用程序时,它仍然在默认位置。第一次加载时如何隐藏 UIPickerView?

即使我操纵了 y 的值,它仍然没有改变任何东西......似乎代码有问题......

谢谢你。

更新:我有这个代码稍后使用按钮为 UIPickerView 设置动画(显示/隐藏),所以我需要的是当用户运行应用程序时初始位置在屏幕之外。不是 Alpha = 0。

UIPickerView *pickerView = [[UIPickerView alloc] init]; // default frame is set
    float pvHeight = pickerView.frame.size.height;
    float y = _screen.bounds.size.height - (pvHeight); // the root view of view controller
    [UIView animateWithDuration:0.5f delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
        _memberList.frame = CGRectMake(0 , y, pickerView.frame.size.width, pvHeight);
    } completion:nil];
4

3 回答 3

1

进入你的viewDidLoad写作:

[yourView setAlpha:0];

当按下按钮并且您想让它可见时,请写下:

[UIView animateWithDuration:0.6 delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [yourView setAlpha:1];
} completion:nil];

如果你想再次隐藏它:

[UIView animateWithDuration:0.6 delay:0. options:UIViewAnimationOptionCurveEaseInOut animations:^{
    [yourView setAlpha:0];
} completion:nil];

我希望它有帮助

于 2013-09-16T18:23:50.913 回答
1

这个怎么样?

pickerView.hidden = YES;

并在点击时显示 UIPickerView。

pickerView.hidden = NO;

希望这是您正在寻找的。

于 2013-09-16T18:11:36.663 回答
1

您似乎已启用自动布局。如果您使用的是 Auto Layout,则不应再使用该setFrame方法,因为 Auto Layout 会自动为您执行此操作。
您需要设置一个约束,在您的情况下可能是一个顶部空间约束,并设置constantthat 的属性UILayoutConstraint。因此,在您的 中viewDidLoad,您设置了,constant因此您的视图超出了窗口的范围。当点击按钮时,您将动画设置constant为一个值,以便视图出现在窗口的边界内。

看看这个问题:Animating view with Auto Layout

于 2013-09-16T18:35:30.580 回答