iOS is implemented by WeChat shake function
1. Description
You need to make an interface, imitate WeChat and shake it to obtain the interface for check-in function.
First, clarify the following points:
1. Vibration is required.
2. Need sound. (Prepare the mp3 sound effect)
2. Post code directly
/ Created by Shi Xiongwei on 16/7/29. // Copyright © 2016 Shi Xiongwei. All rights reserved.// #import "" #import <AVFoundation/> #import <AudioToolbox/> #import <CoreAudio/> @interface SignBoardViewController () { } @property (nonatomic,strong) AVAudioPlayer * audioPlayer; @end @implementation SignBoardViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //Set navigation [self makeNav]; } #pragma mark Custom Nav- (void)makeNav { [ setTitle:@"Daily check-in"];//Rewrite title //Modify the navigation button and modify the response method = CGRectMake(0, 0, 13, 20); [ setBackgroundImage:[UIImage imageNamed:@"NavBack"] forState:UIControlStateNormal]; = 0; = NO; = [UIColor clearColor].CGColor; //Add click method [ addTarget:self action:@selector(navLeftClick) forControlEvents:UIControlEventTouchUpInside]; //Hide the button on the right = YES; } #pragma mark nav left navigation button method rewrite, return button- (void)navLeftClick { [self dismissViewControllerAnimated:YES completion:^{ nil; }]; } #pragma mark - #pragma mark Click- (void)touchesBegan:(nonnull NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event { NSLog(@"Click, touch method, etc."); AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } #pragma mark - #pragma mark Shake start- (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event { NSLog(@"begin motion"); } #pragma mark - #pragma mark Shake end- (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event { NSLog(@"end motion"); if (motion ==UIEventSubtypeMotionShake ) { //Play sound effects SystemSoundID soundID; // shake_sound_male.mp3 NSString *path = [[NSBundle mainBundle ] pathForResource:@"shake_sound_male" ofType:@"mp3"]; AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID); AudioServicesPlaySystemSound (soundID); //Set vibration AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } } #pragma mark - #pragma mark shake Cancel- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event { } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */
The above is all the content of this article. I hope it will be helpful to everyone's study and I hope everyone will support me more.