0

私はUIScrollViewを使って、音声メモアプリのように録音タイムラインを作成しています。これは最初に水平のscrollview'sフレームです。私はバーを描くのにCAShapeLayerを使います。UIScrollViewがコンテンツオフセット0より下にスクロールする方法を教えてください。

scrlViewBars.frame = CGRectMake(0, scrlViewBars.frame.origin.y, SCREEN_WIDTH, 100); 
    .... 
[shapeLayer setPath:[[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, barWidth, barHeight) cornerRadius:2] CGPath]]; 
[scrlViewBars.layer addSublayer:shapeLayer]; 

録音が開始され、すなわち波バーはUIScrollViewのゼロXの位置から作成され始めてから波バーを描画します。バーが画面の半分に達すると、私はcontentSizecontentOffsetを与えてUIScrollViewを戻し始めます。だから、バーはボイスメモアプリのようにちょうど中心にとどまるでしょう。

UIScrollViewタイムライン以外のすべてがうまくいきます。記録が小さい場合、contentSizeは画面の幅より大きくなりません。したがってUIScrollViewは0未満になる可能性がありますcontentOffSet?録画を停止した後は、タイムラインをスクロールすることができ、中央には移動しない現在の録画時間を示すスクラブバーがあるため、録画コンテンツは画面の中央まで移動する必要があります。

答えて

0

左からいくつかのインセットを持つようにcontentInsetプロパティを設定することができます。これはそのトリックを行う必要があります。

self.scrollView.contentInset = UIEdgeInsetsMake(0, self.scrollView.frame.size.width/2, 0, 0); 

希望します。

+0

お返事ありがとうございます。私はすでにそれを試しました。問題は、最初のバーが0番目の位置から作成されることです。スクロールバーが半画面に達するまで移動しません。スクロール表示を移動しています。レコードが小さすぎる場合。私はここで問題に直面している。 –

+0

次に、scrollViewの幅としてmin contentSizeを試してみることができます。あなたの波が小さくても、あなたのcontentInsetは魔法をやるでしょう。 –

+0

アイデアありがとう。私はそれに取り組み、あなたにお知らせします –

関連する問題