私は画像付きのCALayerを持っていて、それを触るとアニメーションします。うまくいきます。素晴らしいです。私が今やりたいことは、同じ画像を押すと再生されるサウンド クリップも用意することです。CALayer は BounceView と呼ばれる UIView クラスに属しているため、これは難しいと思います。MainViewController に BounceView のインスタンスを作成しました。正しい用語を使用していない場合は、お詫び申し上げます。オーディオ コードを MainViewController に配置し、委譲を使用して、BounceView が MainViewController でメソッドをトリガーできるようにする必要がありますか? どんな助けや指示も大歓迎です。
MainViewController.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
@interface MainViewController : UIViewController <AVAudioPlayerDelegate>
@property (nonatomic, retain) IBOutlet UIView *BounceView;
@property (strong, nonatomic) AVAudioPlayer *audioPlayer;
- (IBAction)playAudio:(id)sender;
@end
MainViewController.m
#import "MainViewController.h"
#import "BounceView.h"
@interface MainViewController ()
@end
@implementation MainViewController
@synthesize BounceView;
@synthesize audioPlayer;
- (void)viewDidLoad
{
[super viewDidLoad];
//Setup the audio player
NSURL *noSoundFileURL=[NSURL fileURLWithPath:
[[NSBundle mainBundle]
pathForResource:@"InTheMood" ofType:@"mp3"]];
self.audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:noSoundFileURL error:nil];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (void)loadView
{
NSLog(@"loadView");
// Create a view
CGRect frame = [[UIScreen mainScreen] bounds];
BounceView *v = [[BounceView alloc] initWithFrame:frame];
// Set it as *the* view of this view controller
[self setView:v];
}
- (IBAction)playAudio:(id)sender {
// self.audioPlayer.delegate=self;
[self.audioPlayer play];
}
@end
BounceView.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <QuartzCore/QuartzCore.h>
#import "MainViewController.h"
@interface BounceView : UIView
{
CALayer *myLayer;
}
@end
BounceView.m 要求があればこのコードを提供しますが、コードをオーバーロードしたくありません。ここで、新しいレイヤーを開いて作成し(初期化を割り当て)、サイズ、位置を指定し、UIImage を作成し、基になる CGImage を取得してレイヤーに配置し、ビューのレイヤーのサブレイヤーを作成します。
繰り返しますが、どんな助けも大歓迎です。