1

内部にUIImageviewがあり、フロアプランを表示するUIScrollviewがあります。スクロールビュー内に、マーカー/ピンとして機能する UIButton もあります。

画像をピンチ/ダブルタップしてズームを実装しましたが、画像がスクロールしたりズームしたりしても UIButton 要素は明らかに動きません。

ズームが完了したときにボタンを再配置するために、次のコードを試しました。

[myButton setFrame:CGRectMake(
                          (myButton.frame.origin.x - myButton.frame.size.width / 2) * _scrollView.zoomScale,
                          (myButton.frame.origin.y - myButton.frame.size.height / 2) * _scrollView.zoomScale,
                          myButton.frame.size.width, myButton.frame.size.height)];

これにより、ボタンが左上隅に移動します。

ボタンを画像に対して相対的に保つために私が何をすべきかを誰かが知っていますか(Googleマップでマーカーが行うのと同じ方法)。

4

2 に答える 2

1

最近、これとよく似た質問に答えました。リアルタイムの更新が必要ない場合 (ズームが完了したときにのみ更新する場合)、ここで概説されている方法を使用できるはずです。

于 2012-06-27T14:53:45.163 に答える
0

さて、これは次の方法で解決されました。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"Marker.png"] forState:UIControlStateNormal];
button.frame = CGRectMake(640.0, 230.0, 30.0, 46.0);
[button addTarget:self action:@selector(aMethod:)forControlEvents:UIControlEventTouchUpInside];
[self.imageView addSubview: button];
self.imageView.userInteractionEnabled = YES;

基本的に、ボタンを imageView に直接追加してから userInteraction を有効にすることで、必要なすべての機能を取得できました。

于 2012-07-04T13:09:40.217 に答える