在更改视图Objective-C之前使动画工作

时间:2017-02-07 21:46:47

标签: objective-c animation

我有一些问题。我是Objective-c和Xcode开发的新手。

我的问题如下: 我有一个带有IBActions(cambia视图)和Outlet(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:^{ //
               }];
}

感谢。

2 个答案:

答案 0 :(得分:0)

打开Interface Builder并删除两个视图控制器之间的所有现有连接。

然后按Ctrl +从第一个视图控制器拖动到第二个视图控制器并选择"显示"选项。 step 1

然后点击创建的连接(它被称为segue),切换到属性检查器并为其指定一个ID step 2

在动画的完成块中写下// Create the new dictionary that will be inserted into the plist. NSMutableDictionary *nameDictionary = [NSMutableDictionary dictionary]; [nameDictionary setValue:@"FirstName LastName" forKey:@"fullName"]; [nameDictionary setValue:@"123 North Rd" forKey:@"address"]; // Open the plist from the filesystem. NSMutableArray *plist = [NSMutableArray arrayWithContentsOfFile:@"/path/to/file.plist"]; if (plist == nil) plist = [NSMutableArray array]; [plist addObject:nameDictionary]; [plist writeToFile:@"/path/to/file.plist" atomically:YES];

答案 1 :(得分:0)

您已将button的操作segue与第二个视图相关联,因此只要您点击该按钮,就会显示下一个视图。相反,您将viewcontroller1中的segue连接到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的{​​{1}}中添加此代码以播放音频文件,

    viewDidLoad
  5. 要在返回第一个视图控制器时使按钮的大小正常,请在第一个视图控制器中添加此代码:

    - (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];
    }
    

    希望这会有所帮助。 如果您在理解任何问题时遇到任何问题,请随时发表评论。 :)