2015-05-29 2 views
0

У меня есть подзаголовок, который я создал в файле xib. Это находится в середине экрана, где я в конечном итоге хочу, чтобы это было. Я пытаюсь анимировать его так, чтобы он перемещался в середину снизу, когда нажата кнопка, чтобы показать представление, и я хочу, чтобы он опустился на нижнюю часть, когда вид закрыт. Как сейчас, он начинается посередине, где он находится в xib и оживляется оттуда. Как я могу заставить его начать снизу и перейти к середине?Animate Subview to Middle

In viewDidLoad: Я устанавливаю стартовый фрейм.

CGRect newFrame = self.findFriendView.frame; 
    newFrame.origin.y += 1000; 
    self.findFriendView.frame = newFrame; 
    self.findFriendView.hidden = YES; 

Вот метод нажатия кнопки для отображения подсмотра.

- (void)addFriend { 
    self.followersTableView.userInteractionEnabled = NO; 
    self.findFriendView.hidden = NO; 

    CGRect newFrame = self.findFriendView.frame; 
    newFrame.origin.y -= 1000; 

    [UIView animateWithDuration:1.0 
        animations:^{self.findFriendView.frame = newFrame;} 
        completion:nil]; 
} 

enter image description here

+0

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

+0

, если вы находитесь на автомакете, вам нужно изменить _constraint_ вместо _frame _... – holex

ответ

0

Это кажется очень странным способом сделать это. Почему бы просто не создать второй контроллер представления в своем раскадровке и представить его как лист модальной формы?

Тогда вы можете просто сделать следующее:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil]; 
YourNewViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourNewViewControllerID"]; 

viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
viewController.modalPresentationStyle = UIModalPresentationFormSheet; 
[self presentViewController:viewController animated:YES completion:nil]; 

и если вам нужно послать любые данные в новый контроллер, вы можете просто поместить это в .h нового контроллера:

@property (nonatomic, readwrite, assign) NSDictionary * IncomingData; 

, а затем создать NSDictionary, содержащий данные, которые вы хотите видеть в своем главном зрения и отправить его с помощью следующей строки (поставить его непосредственно перед presentviewcontroller):

viewController.IncomingData = tempDict; 

EDIT:

OP не использует раскадровки так, а не:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"iPad" bundle:nil]; 
YourNewViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"YourNewViewControllerID"]; 

Вам нужно сделать:

YourNewViewController = [[YourNewViewController alloc] initWithNibName:@"YourNewViewController" bundle:nil]; 
+0

Я не использую раскадровки – raginggoat

+0

См. Обновленный ответ. – Compy

+0

После того как я отклонил новый контроллер представления, как я могу перезагрузить представление таблицы в контроллере представления, с которого я представляю новый контроллер? – raginggoat