6

この質問への回答が本当に欲しいですhttps://devforums.apple.com/message/723468。iOS 6に関するものであり、Appleごとに機密情報であるため、詳細を投稿できません。

回答/コメントをAppleDevフォーラムの投稿に投稿して、ここで知らせてください。

編集:iOS6が正式にリリースされたので:

私のiOS6以前のコードでは、ユーザーの場所が移動したときに地図を回転させるためにこれを行っています。

//this is in my MKMapViewDelegate
-(void) rotateMap:(MKMapView *)mapViewTmp forLocation:(MKUserLocation *) userLocation {
     ...
     //calculate needed rotation
     ...
     [mapViewTmp setTransform:CGAffineTransformMakeRotation(lastRotation)]; //rotate the MKMapView

     for (id<MKAnnotation> annotation in mapViewTmp.annotations) {
           MKAnnotationView* annotationView =[mapViewTmp viewForAnnotation:annotation];

                    [annotationView setTransform:CGAffineTransformMakeRotation(-lastRotation)];      //counter rotate the Annotation Views

                    [annotationView setNeedsDisplay];  //ios6
     }

}

そして、これはうまくいきました(数千人のユーザー)。

ただし、ios6(2012年9月4日にXcode / SDKを更新しました)では、注釈ビューはこの回転を維持しません(たとえば、マップがパンされている場合)。それらは回転していない状態に戻ります(これは、私のマップが回転しているため、テキストが水平ではなく角度で表示されることを意味します)。

コードは一時的に注釈を回転させてテキストを水平に表示しますが、マップがパンされている場合(および他の原因のように見える場合)、注釈は回転されていない状態に反転し、注釈テキストは回転した地図。

iOS6で回転したままになるようにMKAnnotationViewを回転させる正しい方法は何ですか?変更の原因となったMKMapViewの変更点は何ですか?

4

3 に答える 3

5

これに対する修正は、viewForAnnotationメソッドで次のことを行うことです。

// iOS6 BUG WORKAROUND !!!!!!!
if (is6orMore) {
     [annotationView setTransform:CGAffineTransformMakeRotation(.001)]; //any small positive rotation
}

これは、元の質問で私がコメントとして投稿した後、cristisが回答として投稿しました(私のコメントを参照)が、私がそれを思いついたので、私は自分の回答を投稿して受け入れています。それは理にかなっていますか?

于 2012-10-17T12:42:50.063 に答える
2

これはコメントとして投稿されました。誰でも簡単に見られるように(そして理解するのに時間を無駄にしないように)、回答として再投稿しています。

そして、修正はviewForAnnotationメソッドで===>です:

// iOS6 BUG WORKAROUND !!!!!!!
if (is6orMore) {
     [annotationView setTransform:CGAffineTransformMakeRotation(.001)]; 
}
于 2012-10-17T06:46:19.857 に答える
1

私も同じことを見ました。修正方法は次のとおりです。

MKAnnotationViewの子に変換を設定します。したがって、疑似っぽいコードでは次のようになります。

view.child.transform = CGAffineTransformMakeRotation(0.3);

注釈ビューを制御し、ビューサブツリーを制御できるようにします。変換は連結され、その位置で行うことは何でも継承します。iOS6で動作します。

于 2012-10-10T14:24:05.153 に答える