如何在'viewDidLoad'上隐藏UIPickerView?

时间:2013-09-16 18:09:03

标签: ios objective-c

我想在加载我的应用时隐藏我的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];

3 个答案:

答案 0 :(得分:1)

这个怎么样?

pickerView.hidden = YES;

并在tap的操作中显示UIPickerView。

pickerView.hidden = NO;

希望这就是你要找的东西。

答案 1 :(得分: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];

我希望它有所帮助

答案 2 :(得分:1)

您似乎启用了自动布局。如果您正在使用自动布局,则不应再使用setFrame方法,因为自动布局会自动为您执行此操作。
您需要设置约束,可能是您的案例中的顶部空间约束,并设置constant的{​​{1}}属性。因此,在UILayoutConstraint中,您设置了viewDidLoad,因此您的视图超出了窗口的范围。当点击按钮时,您可以将constant设置为一个值,以便视图显示在窗口的边界内。

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