2012-06-05 4 views
0

Я пытаюсь оживить мое UITableView скользящего с экрана, я попытался это ниже без успеха:Слайд UITableView Off Screen?

-(void)slideTableViewOffScreen 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    [UIView setAnimationDelegate:self]; 

    stageSelectionTable.frame = CGRectMake(stageSelectionTable.frame.origin.x - stageSelectionTable.frame.size.width, stageSelectionTable.frame.origin.y, stageSelectionTable.frame.size.height, stageSelectionTable.frame.size.width); 

    [UIView commitAnimations]; 
} 

Любых идей, почему она не может работать, или то, что мне нужно для этого сделать анимацию для работы? Когда этот код вызывается, ничего не происходит.

+0

Я просто пытался именно ваш код (с учетом таблицы на 0 в X), и он работает отлично на моей стороне, за исключением того, что она меняет местами ширину и высоту таблицы. Можете ли вы попробовать инвертировать 2 последних аргумента CGRectMake? Также вы уверены, что ваш код вызван? –

+0

Код определенно вызывается. Я думаю, это может быть потому, что у меня есть класс категории, который устанавливает кадр (поскольку мне нужно иметь узкое представление таблицы). Любые идеи, как я мог бы установить узкую ширину, которая мне нужна, и иметь эту работу? –

+0

Ahh ok получил его работу, но он делает то же, что и вы упомянули. он влияет на размер, а не на позицию. Это странно, Im меняет положение x, а не размер. –

ответ

0

Оказывается, этот код работает без каких-либо странностей:

-(void)slideTableViewOffScreen 
{ 
    CGRect newFrame = stageSelectionTable.frame; 
    newFrame.origin.x -= 130; 

    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    [UIView setAnimationDelegate:self]; 

    stageSelectionTable.frame = newFrame; 

    [UIView commitAnimations]; 
}