iOS - перемещение UITextField в другую позицию при перемещении UIView - PullRequest
3 голосов
/ 28 августа 2011

У меня есть основной UIView, который перемещается вверх с помощью переключателя.У меня это работает, и там нет проблем.Теперь UIView, когда он внизу, занимает примерно половину экрана, а когда он нажат, он показывает нижние 40 пикселей.

В UIView, когда он внизу, он имеет UITextField и находится где-то посередине.Когда UIView перемещается вверх, я хочу, чтобы UITextField переместился так, чтобы он находился в пределах этих 40 пикселей, чтобы он всегда был доступен.

Это код, который я получил для перемещения UIView:

-(IBAction)mainview:(id)sender{

if (uiSwitch.on) {
    label.text = @"Push Up View";
    [UIView beginAnimations:@"animateView" context:nil];
    [UIView setAnimationDuration:0.5];
    CGRect viewFrame = [subView frame];
    viewFrame.origin.y  += 0;
    subView.frame = viewFrame;
    subView.alpha = 1.0; 
    [self.view addSubview:subView];
    [UIView commitAnimations];
}

if ([uiSwitch isOn] == YES) {
    [UIView beginAnimations:@"animateView" context:nil];
    [UIView setAnimationDuration:0.5];      
    CGRect viewFrame = [subView frame];
    viewFrame.origin.y  = 0;
    subView.frame = viewFrame;    
    [UIView commitAnimations];
}
else {
    label.text = @"Show View";   
    [UIView beginAnimations:@"returnView" context:nil];
    [UIView setAnimationDuration:0.5];  
    CGRect viewFrame = [subView frame];
    viewFrame.origin.y  = -230;
    subView.frame = viewFrame; 
    subView.alpha = 1.0;
    [UIView commitAnimations];
}}

UITextField еще не добавлен к этому, и именно здесь я застрял.Я знаю, что мне, вероятно, придется создать аналогичный IBAction для UITextField, но я не уверен, как анимировать этот бит.

Любая помощь ???Ура Джефф

1 Ответ

10 голосов
/ 28 августа 2011

Вы можете анимировать несколько просмотров одновременно. Ваш код:

label.text = @"Show View";   
[UIView beginAnimations:@"returnView" context:nil];
[UIView setAnimationDuration:0.5];  
CGRect viewFrame = [subView frame];
viewFrame.origin.y  = -230;
subView.frame = viewFrame; 
subView.alpha = 1.0;
[UIView commitAnimations];

.. может включать дополнительные манипуляции с кадрами в вашем UITextField:

label.text = @"Show View";   
[UIView beginAnimations:@"returnView" context:nil];
[UIView setAnimationDuration:0.5];  
CGRect viewFrame = [subView frame];
viewFrame.origin.y  = -230;
subView.frame = viewFrame; 
subView.alpha = 1.0;
// let's move our textField too
CGRect textFieldFrame=textField.frame;
frame.origin.y+=40;
textField.frame=textFieldFrame;
[UIView commitAnimations];

Обратите внимание, что если вы ориентируетесь на iOS 4.x или новее, вы можете положиться на блоки анимации:

[UIView animateWithDuration:0.5 animations:^{

    CGRect frame;

    // move our subView to its new position
    frame=subView.frame;
    frame.origin.y=-230;
    subView.frame=frame;
    subView.alpha=1.0;

    // let's move our textField too
    frame=textField.frame;
    frame.origin.y=40;
    textField.frame=frame;

}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...