私は を持ってUIScrollView
いUIImageView
ます。これにピンを表示したいimageView
。のサブビューとしてピンを追加するとImageView
、スケール変換がピンでも発生する場合を除いて、すべてがうまくいきます。私はこの動作を望んでおらず、ピンを同じままにしたいと考えています。
そこで、ピンを別のビューに追加することを選択します。このビューは、ImageView の上にあり、UIScrollView
. ご想像のとおり、ここでのアイデアは、マップ上にホバリングし、スケーリングせずに、プロットした場所にピンを表示するレイヤーを作成することです。
レイヤービューに追加されたときのピンは、縮尺の場合は調整されませんImageView
。ImageView
ただし、スケール変換が行われたため、ピンの位置が元の原点 x/y と一致しないという問題が発生します。
基本的に、これはピンのある場所のカスタム マップです。ピンをフロートさせ、ImageView をズームインおよびズームアウトしないようにしようとしていますが、ズームが発生したときにピンを配置した場所を覚えています。
いくつかのコード:
scrollView = [[UIScrollView alloc] initWithFrame:viewRect];
scrollView.delegate = self;
scrollView.pagingEnabled = NO;
scrollView.scrollsToTop = NO;
[scrollView setBackgroundColor:[UIColor clearColor]];
scrollView.clipsToBounds = YES; // default is NO, we want to restrict drawing within our scrollview
scrollView.bounces = YES;
scrollView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
imageViewMap = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
imageViewMap.userInteractionEnabled = YES;
viewRect = CGRectMake(0,0,imageViewMap.image.size.width,imageViewMap.image.size.height);
//viewRect = CGRectMake(0,0,2976,3928);
[scrollView addSubview:imageViewMap];
[scrollView setContentSize:CGSizeMake(viewRect.size.width, viewRect.size.height)];
iconsView = [[UIView alloc] initWithFrame:imageViewMap.frame];
[scrollView addSubview:iconsView];
後でいくつかのイベントにピンを追加するコード。
[iconsView addSubview:pinIcon];
スケールが発生したときに移動せずにピンをマップ上にホバーさせる方法を見つけようとするのに苦労しています。