0

这是我在按下按钮时用来显示 UIPickerView 的方法,我会用什么方法来关闭它?

if (buttonIndex == 4) {
    int height = 255;

//创建新视图

UIView * newView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 320, height)];
    newView.backgroundColor = [UIColor colorWithWhite:1 alpha:1];

//添加工具栏

UIToolbar * toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0, 0, 320, 40)];
    toolbar.barStyle = UIBarStyleBlack;

//添加按钮

UIBarButtonItem *infoButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:nil action:@selector(dismissCustom:)];
    toolbar.items = [NSArray arrayWithObjects:infoButtonItem, nil];

//添加日期选择器

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
    datePicker.datePickerMode = UIDatePickerModeDateAndTime ;
    datePicker.hidden = NO;
    datePicker.date = [NSDate date];
    datePicker.frame = CGRectMake(0, 40, 320, 250);
    [datePicker addTarget:self action:nil/*@selector(changeDateInLabel:)*/ forControlEvents:UIControlEventValueChanged];
    [newView addSubview:datePicker];

//添加弹出视图

[newView addSubview:toolbar];
[self.view addSubview:newView];

//动画到屏幕上

CGRect temp = newView.frame;
    temp.origin.y = CGRectGetMaxY(self.view.bounds);
    newView.frame = temp;
    [UIView beginAnimations:nil context:nil];
    temp.origin.y -= height;
    newView.frame = temp;
    [UIView commitAnimations];

}
4

1 回答 1

0

要移除视图,请执行另一个动画。只需反转框架设置,使其移出屏幕即可。动画完成后,通过调用删除“newView” [newView removeFromSuperview]

您应该考虑使用更新的 UIView 动画块形式。这会让事情变得容易得多。

另一件事。如果您有一个自定义视图类,为什么该自定义类不做所有的工作来设置自己?

此外,类名以大写字母开头是标准约定。这使得在查看代码时可以很容易地从变量名中区分出类名。

于 2012-10-27T02:21:47.820 回答