2015-04-17 5 views
0

У меня есть статический UITableViewCell со скрытым datePickerView в нем. Когда выбирается button, становится видимым datePickerView, а высота cells становится больше. Вот код:Как оживить высоту UIDatePickerView?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == 1) 
    { 
     if (self.datePickerView.hidden == YES) { 
      return 252 - self.datePickerView.bounds.size.height; 
     } 
     else return 252; 
    } 
    tableView.estimatedRowHeight = 150; 
    return UITableViewAutomaticDimension; 
} 

- (IBAction)datePicker:(id)sender 
{ 
    if (self.datePickerView.hidden == YES) 
    { 
     [self.datePickerView setHidden:NO]; 

     [self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, 0)]; 
     [UIDatePicker animateWithDuration:1.0 animations:^(){ 
      [self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, self.datePickerView.frame.size.height)]; 
     }]; 
    } else { 
     [self.datePickerView setHidden:YES]; 
    } 
    [self.tableView beginUpdates]; 
    [self.tableView endUpdates]; 
} 

Когда datePickerView становится видимой, а cells высоты становится все больше, cells высоты одушевляет, но datePickerView не делает. Я попытался анимировать его высоту, поэтому ее нужно синхронизировать с cell, но это не так?

ответ

0

Когда вы устанавливаете рамку datePickerView в анимацию, вы ее вообще не меняете. Попробуйте это вместо:

CGFloat originalHeight = self.datePickerView.frame.size.height; 
[self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, 0)]; 
[UIDatePicker animateWithDuration:1.0 animations:^(){ 
    [self.datePickerView setFrame:CGRectMake(self.datePickerView.frame.origin.x, self.datePickerView.frame.origin.y, self.datePickerView.frame.size.width, originalHeight)]; 
}]; 
+0

Он по-прежнему не оживляет? –

+0

После анимации его высота «0» или ожидаемое значение? –

+0

ожидаемое значение. Высота никогда не показывает значение 0 –

Смежные вопросы