前回DatePickerが画面の下半分だけキーボードみたいにせり上がるタイプのサンプルをご紹介しましたが、アニメーションの方法としてiOS4.0以降の「UIView#animateWithDuration」を使用したが方が簡潔に書けるため、サンプルに追記しました。
「UIView#animateWithDuration」を使用すると下記コードのようにシンプルに書くことができます。ポイントは^(caret)から始まるBlocksというiOS4.0からの新しい構文を利用している点です。Blocksについては別途またエントリで紹介できたらと思います。正直まだ不勉強な点が多いので。。
-(void)showUpDatePickerWithBlocks { self.pickerView.date = [self.dateFormatter dateFromString:self.labelDate.text]; if (self.pickerView.superview == nil) { [self.view.window addSubview: self.pickerView]; CGRect screenRect = [[UIScreen mainScreen] applicationFrame]; CGSize pickerSize = [self.pickerView sizeThatFits:CGSizeZero]; CGRect startRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height, pickerSize.width, pickerSize.height); self.pickerView.frame = startRect; CGRect pickerRect = CGRectMake(0.0, screenRect.origin.y + screenRect.size.height - pickerSize.height, pickerSize.width, pickerSize.height); [UIView animateWithDuration:0.3 animations:^{ self.pickerView.frame = pickerRect; CGRect newFrame = self.view.frame; newFrame.size.height -= self.pickerView.frame.size.height; self.view.frame = newFrame; [buttonShowWithBlocks setTitle:@"showDownDatePickerWithBlocks" forState:UIControlStateNormal]; }]; }else{ [self showDownDatePickerWithBlocks]; } }
また全ソースコードはgithubより取得してください。
harusou-apps/DatePickerShowAnimatedSample