У меня есть приложение View для iPhone / iPod, которое воспроизводит звук, с VU-метром, показывающим уровень входного дБ. Этот измеритель громкости анимирован с помощью Core Animation.
Приложение работает нормально, с VU-метром, работающим отлично, имея только один вид. Но теперь, к сожалению, после того, как я вставил контроллер панели вкладок, чтобы иметь другой вид с некоторым интернет-контентом, я не могу заставить измеритель VU работать на моем первом виде, как раньше.
Приложение аварийно завершает работу (получает сообщение EXC_BAD_ACCESS ), поскольку UIView (который содержит файл .png VU meter для базовой анимации) не вставляется должным образом во время запуска, как это было раньше в качестве только просмотра. применение.
Вот мой код в файле myAppDelegate.m :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
PlayerViewController *newController = [[PlayerViewController alloc] initWithNibName: @"PlayerView"
bundle: [NSBundle mainBundle]];
self.viewController = newController;
[newController release];
UIView *controllerView = [self.viewController view];
[self.window addSubview: controllerView];
[self.viewController addBargraphToView: controllerView];
[self.window makeKeyAndVisible];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
return YES;
}
А вот мой PlayerViewController.m файл, где у меня есть метод addBargraphToView , содержащий мое изображение для вставки. Он остается невидимым до тех пор, пока VU метр не начнет работать:
- (void) addBargraphToView: (UIView *) parentView {
// static image for showing average level
UIImage *soundbarImage = [[UIImage imageNamed: @"vu-meter.png"] retain];
// background colors for generated image for showing peak level
self.peakClear = [UIColor clearColor];
self.peakGray = [UIColor lightGrayColor];
self.peakOrange = [UIColor orangeColor];
self.peakRed = [UIColor redColor];
levelMeter = [CALayer layer];
levelMeter.anchorPoint = CGPointMake (0.0, 20.0); // anchor to halfway up the left edge
levelMeter.frame = CGRectMake (15, 200, 0, kLevelMeterHeight); // set width to 0 to start to completely hide the bar graph segements
levelMeter.contents = (UIImage *) soundbarImage.CGImage;
peakLevelMeter = [CALayer layer];
peakLevelMeter.frame = CGRectMake (41, 233, 0, kLevelMeterHeight);
peakLevelMeter.anchorPoint = CGPointMake (0.5, 10.0);
peakLevelMeter.backgroundColor = peakGray.CGColor;
peakLevelMeter.bounds = CGRectMake (0, 0, 0, kLevelMeterHeight);
peakLevelMeter.contentsRect = CGRectMake (0, 0, 1.0, 1.0);
[parentView.layer addSublayer: levelMeter];
[parentView.layer addSublayer: peakLevelMeter];
[soundbarImage release];
}
Как я могу решить эту проблему? Нужно ли вставлять образ UIView в какой-то другой точке, а не во время запуска приложения?
Большое спасибо за помощь, дорогие друзья!