我想在加载我的应用时隐藏我的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];
答案 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
设置为一个值,以便视图显示在窗口的边界内。