2つのスクロールビューを並べて配置し、個別にズームできます。これを行うには、ビューをスクロールビュー内に配置し、スクロールビューのズームスケールを設定します。これまでのところ、正常に動作します。ここで、2つの画像を一緒にズームする新しい要件があります。これにより、一方の画像をズームすると、もう一方の画像が同じズームスケールで自動的にズームされます。比較の際に便利なように、2つのスクロールビューのいずれかをスクロールすることで2つのスクロールビューを一緒にスクロールできるroambiアプリを参照として提供しました。基本的に、私がやっていることは、2つのビューの比較でもあります。スクロールビューデリゲートメソッドを実行しましたが、必要な結果を得ることができませんでした。どうすればよいですか?
2 に答える
私はこれを行ったことはありませんが、頭のてっぺんから、最初に両方でズームを同じにする必要があると思います(上記のように)。次に、デリゲートメソッドを使用して確認する必要があります両方のスクロールビューに同じ contentOffset 値があります。つまり、手動スクロールまたはプログラムによるスクロールによって一方が変更された場合、(デリゲート コールバックを使用して) もう一方を同じ contentOffset 値に設定する必要があります。
編集: リクエストに応じて、(テストされていない) コードを少し追加します:
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if(scrollView == self.myFirstScroller)
{
self.mySecondScroller.contentOffset = self.myFirstScroller.contentOffset;
}
else {
self.myFirstScroller.contentOffset = self.mySecondScroller.contentOffset;
}
}
ズームは上記と同様に行われます。
ただし、プロジェクトにドロップするだけのコピー アンド ペースト ソリューションを探している場合は、スクロール ビューについてもう少し勉強する必要があると思います。Apple プログラミング ガイドを読む必要があります。スクロールビューは少し扱いにくい場合があり、多くの場合、正しく機能させるために多くのデリゲート メソッドを使用する必要があるためです。
少し前に似たようなものを実装しました(ボタン用に実装しました)。これが私がやった方法です:
2 つの を取りUIScrollView
、それらを参照します (私は と を使用firstScrollView
しましたsecondScrollView
)
2 つの を取りUIButton
、それらを参照します (私は と を使用firstImgBtn
しましたsecondImgBtn
)。デリゲートを両方のスクロールビューに設定し、次のデリゲート メソッドを使用します。
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
//return the respective button in the scrollview to be zoomed
if(scrollView==firstScrollView){
return firstImgBtn;
}
else{
return secondImgBtn;
}
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
// zoom in the other scrollview when one has zoomed
if(zoomTogether){//a bool to decide whether to zoom the two together or not
if(scrollView==firstScrollView){
secondScrollView.zoomScale = firstScrollView.zoomScale;
}
else{
firstScrollView.zoomScale = secondScrollView.zoomScale;
}
}
}
これは、の任意のサブクラスに適用できますUIView
- あなたの場合はUIImageView
sになります