我正在尝试将子视图添加到某个视图(坏视图),它总是出现在我想要的位置的右侧(屏幕上的 x 值不同)。
但是,我注意到当我将此子视图添加到不同的视图(好视图)时,它被放置在正确的位置。
坏视图和好视图是同一个视图的子视图,并且具有相同的框架(好视图是滚动视图中的可缩放视图,而坏视图是不缩放的覆盖视图)。
我运行以下代码:
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 中,标签出现在我想要的位置。在 Bad View 中,标签显示在右侧一点。
上述代码的输出是:
相同的观点
显示不正确的视图框架:0.000275、0.000000、983.999451、648.282349、正确显示的视图框架:0.000293、-0.000003、983.999390、648.282349
所以它们实际上没有完全相同的帧(即使我之前将它们设置为相等),但它们非常接近,唯一可能发生舍入差异的地方是 origin.y 值,但应用程序时的差异运行在 origin.x 值中。
我已经浪费了很多时间来解决这个问题,所以非常感谢您的帮助