2

1 つのビューに 15 枚の画像が表示されています。ユーザーの声に基づいて画像をスケーリングする必要があります (ユーザーが話す声が大きいほど、画像を拡大する必要があります)。現時点では、AVAudioRecorder で averagePowerForChannel を使用しており、オーディオを頻繁にサンプリングして、すべての画像を適切にスケーリングしています。スケーリングを行うために使用しているコードは次のようになります。

- (void)scaleImages:(float)scalingFactor {
    for (UIView *imageHolder in self.imageView.subviews) {
        UIView *image = [imageHolder.subviews objectAtIndex:0];
        image.transform = CGAffineTransformMakeScale(scalingFactor, scalingFactor);
        image.hidden = scalingFactor <= 0.0f;
    }
}

画像が 1 枚の場合は問題なく動作しますが、15 枚の画像すべてに対してこれを行うと、信じられないほどラグが発生し、応答しなくなります。サンプリングの頻度を下げる、サンプリング出力を正規化するなど、いくつかの異なるオプションを試しましたが、違いはないようです。

これをどのように最適化しますか?

4

1 に答える 1

1

GPUImage フレームワークを試してみてください。GPU を使用して Core Image 変換を高速化します。

https://github.com/BradLarson/GPUImage

于 2013-01-24T08:11:41.530 に答える