UIImageView initでスクロールビューを持っています。UIImageViewにボタンを追加します。画像をズームすると、ボタンもズームを実行します。ボタンではなく画像のみをズームするにはどうすればよいですか。お時間いただきありがとうございます。
2 に答える
ズームの影響を受けないようにするボタンやその他のビューをUIScrollView
、 と同じレベルのビューに配置しUIScrollView
ます。この目的のために設定されたビュー階層の例を次に示します。
スクロール ビューとその中のすべてがズームされます (この場合はイメージ ビュー)。スクロール ビューの下の UIView (この場合、Default.png 画像を含む画像ビュー) では、スクロール ビューがズームされてもズームしません。
編集:
ボタンを画像に対して同じ場所に残すには、サブビューとしてスクロール ビューに追加UIScrollViewDelegate
し、View Controller ヘッダーに追加します。UIButton
ビュー コントローラーの実装: で初期フレームをキャプチャしviewWillAppear
、スクロール ビュー デリゲートscrollViewDidZoom
メソッドを使用してボタン フレームを更新し、そのままの状態に保ちます。これにより、パン時にボタンを画像とともに移動させることもできます。
更新されたビュー構造は次のとおりです。
該当するビュー コントローラーのコード セグメント:
@interface MyViewController () {
CGRect initialButtonFrame;
...
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
initialButtonFrame = self.button.frame;
...
}
- (void)scrollViewDidZoom:(UIScrollView *)sv
{
self.button.frame = CGRectMake((initialButtonFrame.origin.x * self.scrollView.zoomScale),
(initialButtonFrame.origin.y * self.scrollView.zoomScale),
initialButtonFrame.size.width,
initialButtonFrame.size.height);
...
}
これは、画像内の配置に対してボタンが所定の位置にとどまっていることを示すいくつかの画像です。ボタンの原点は、ズームしていないとき (最初の画像) とズームしているとき (2 番目の画像) で、消防士のコートの中央下部近くの赤い領域の左上近くにあることに注意してください。
ボタンがスクロール ビューのサブビューにならないように、imageScrollView
スーパービューの後にボタンを追加します。imageScrollView