1

マイクのレベルに合わせて変動するバーを作ろうとしていますが、上方向に変動させるのに苦労しています。これがコードです

- (void)setVUMeterHeight:(float)height {
     if (height < 0)
        height = 0;

     CGRect frame = vuMeter.frame;
     frame.size.height = height+10;
     vuMeter.frame = frame;
}

- (void)updateVUMeter {
float height = (90+voiceSearch.audioLevel)*5/2;

     [self setVUMeterHeight:height];    
     [self performSelector:@selector(updateVUMeter) withObject:nil afterDelay:0.05];
}

問題は、高さが 10px から始まり、マイクがアクティブになると、高さが下方向に拡張されることです。ビューに負の高さの値を与えることでこれを修正しようとしましたが、ビューは負の高さを持つことはできません。高さを上方向に変更する方法を知っている人はいますか? ありがとう。

4

1 に答える 1

2

サイズを拡張するのと同じ量だけ、原点を上に拡張します。

何かのようなもの:

- (void)setVUMeterHeight:(float)height {
     if (height < 0)
        height = 0;

     const CGFloat kMeterBottom = 200;
     CGRect frame = vuMeter.frame;
     frame.size.height = height+10;
     frame.origin.y = kMeterBottom - frame.size.height;
     vuMeter.frame = frame;
}
于 2012-05-06T04:04:22.253 に答える