サブビューを特定のビュー (Bad View) に追加しようとしていますが、必要な場所の少し右側に常に表示されます (画面上の x 値が異なります)。
ただし、このサブビューを別のビュー (Good View) に追加すると、正しい位置に配置されることに気付きました。
Bad View と Good View は同じビューの子であり、同じフレームを持ちます (Good View はスクロール ビューのズーム可能なビューですが、Bad View はズームしないオーバーレイ ビューです)。
次のコードを実行します。
view.frame = [[self tiledScrollView] tileContainerView].frame;
if ([[[self tiledScrollView] tileContainerView] superview] == [view superview])
{
NSLog(@"SAME SUPERVIEWS");
}
[[self tiledScrollView] tileContainerView].frame = view.frame;
NSLog(@"FRAME FOR VIEW THAT DISPLAYS INCORRECTLY: %f, %f, %f, %f, \n FRAME FOR VIEW THAT DISPLAYS CORRECTLY: %f, %f, %f, %f", view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height, [[self tiledScrollView] tileContainerView].frame.origin.x, [[self tiledScrollView] tileContainerView].frame.origin.y, [[self tiledScrollView] tileContainerView].frame.size.width, [[self tiledScrollView] tileContainerView].frame.size.height);
その直後に、サブビューを [[self tiledScrollView] tileContainerView] (Good View) または view (Bad View) に追加します。
Good View では、ラベルは希望する場所に表示されます。Bad View では、ラベルが少し右側に表示されます。
上記のコードからの出力は次のとおりです。
同じスーパービュー
正しく表示されないビューのフレーム: 0.000275、0.000000、983.999451、648.282349、正しく表示されるビューのフレーム: 0.000293、-0.000003、983.999390、648.282349
したがって、それらは実際にはまったく同じフレームを持っているわけではありません (直前にそれらを等しく設定しましたが) が、それらは非常に近く、丸めとの違いが発生する唯一の場所は origin.y の値ですが、アプリケーションがruns は origin.x 値にあります。
私はこれを理解しようとして多くの時間を無駄にしてきたので、助けていただければ幸いです