2017-02-07 2 views
0

У меня есть некоторые вопросы. Я новичок в разработке Objective-c и Xcode.Сделайте анимационную работу перед изменением вида Objective-C

Моя проблема заключается в следующем: У меня есть кнопка с IBActions (cambia view) и выход (gioca_outlet).
Эта кнопка подключается к другому виду с помощью «Показать», поэтому, когда я нажимаю следующий вид, появляется.

Но перед изменением вида я хочу совершить анимацию с помощью кнопки, у которой есть собственное изображение.

Я хотел бы масштабировать размер изображения кнопки (поддерживая тот же центр) в течение 1/2 секунд, а затем показывать второй вид. Мне также хотелось бы, чтобы размер кнопки был начальным, когда я перехожу назад к основному виду.

Итак, я придумал этот код:

- (IBAction)cambiaview:(id)sender { 

[UIView animateWithDuration:2.0 delay:0.4 options:UIViewAnimationOptionTransitionCrossDissolve animations:{ 
[_gioca_outlet setCenter:CGPointMake([_gioca_outlet.center].x + 0.0001, [_gioca_outlet.center].y +0.0001)]; 
[_gioca_outlet setTransform:CGAffineTransformScale(_gioca_outlet.transform, 2.0, 2.0)];} 
       completion:^(BOOL finished) { 

       }; 
} 

кнопку Назад, чтобы вернуться к главному экрану:

 - (IBAction)back:(id)sender { 
       [self dismissViewControllerAnimated:YES completion:^{ // 
       }]; 
} 

Спасибо.

+0

Что именно вы хотите? После нажатия кнопки изображение кнопки будет больше, а затем появится второй вид, и когда вы вернетесь к первому виду, размер кнопки останется таким же, как и в начале. Пожалуйста, подтвердите, чтобы я мог вам помочь. @cristakey – iPeter

+0

Да, при нажатии кнопки запускается звуковой файл. –

+0

Насколько велик ваш аудиофайл? – iPeter

ответ

0

Open Interface Builder и удалить все существующие соединения между двумя контроллерами представлений.

Затем ctrl + перетащите с контроллера первого взгляда на второй и выберите «Показать». step 1

После этого нажмите на созданное соединение (это называется переход), переключитесь на атрибуты инспектора и дать ему ID step 2

В завершение блока анимации написать [self performSegueWithIdentifier:@"showNextView"];

0

Вы подключили Действие button происходит со второго представления, поэтому, как только вы нажмете на кнопку, появится следующее представление. Вместо этого вы присоедините segue от viewcontroller1 до viewcontroller2 и укажите идентификатор вашего segue.

Затем нажмите на событие button, добавьте этот код.

- (IBAction)cambiaview:(id)sender 
    [UIView animateWithDuration:0.8 animations:^{ 
     //this will transform your button to grow a little bit bigger 
     _gioca_outlet.transform = CGAffineTransformMakeScale(1.5, 1.5); 
    }completion:^(BOOL finished) { 
     //push from viewcontroller1 to viewcontroller2 using you segue identifier 
     [self performSegueWithIdentifier:@"vc1tovc2segue" sender:self] 
    }]; 

Этот код сделает вашу кнопку немного более оживленной, а затем подталкивает к контроллеру второго взгляда.

Теперь, если вы хотите воспроизвести аудио, вы можете воспроизвести его в методе viewDidLoad контроллера второго вида с использованием рамки AVFoundation.

Для воспроизведения звукового файла выполните следующие действия:

  1. Добавьте свой звуковой файл в каталоге проектов.

  2. Импорт AVFoundation рамки в письменной форме,

    #import <AVFoundation/AVFoundation.h> 
    
  3. Создать сильное свойство AVAudioPlayer в .h вашего viewcontroller2.

    @property (strong, nonatomic) AVAudioPlayer *player; 
    
  4. Тогда в viewcontroller2 «s viewDidLoad добавить этот код, чтобы играть звуковой файл,

    - (void)viewDidLoad { 
        [super viewDidLoad]; 
        //SampleAudio is your audio file name and mp3 is your extension. 
        NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"SampleAudio" ofType:@"mp3"]; 
        NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; 
    
        self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil]; 
        self.player.delegate = self; 
    
        [self.player play]; 
    } 
    

Для того, чтобы размер этой кнопки нормально, когда вы вернетесь в свой первый контроллер представления, добавить этот код в вашем первом контроллере представления:

-(void)viewWillAppear:(BOOL)animated 
{ 
    _gioca_outlet.transform = CGAffineTransformIdentity; 
} 

Надеюсь, что это h ELPS. Если у вас возникли проблемы с пониманием чего-либо, не стесняйтесь оставлять комментарии. :)

+0

Спасибо за подсказку, он работает для аудиофайла, но когда я нажимаю кнопку, анимация не фиксируется. Вид меняется на второй, но кнопка не растет медленно. Только когда я возвращаюсь на главную страницу, я вижу свою новую большую кнопку. Я хочу, чтобы кнопка имела оригинал, когда я переключаюсь на основной режим. Спасибо за помощь –

+0

Отредактировал мой вопрос. Установите кнопку transfrom 1.5 вместо 1.25 и время анимации UIView 0.8 с 0,3. @cristakeyIT – iPeter

+0

Еще раз спасибо, извините, если я настаиваю, но это не сработает. Я имею в виду, что он не растет постепенно, я не вижу никакого изменения размера при нажатии на него. Мне сказали не делать эту анимацию, но я хотел бы знать, в чем ошибка –