我有一个用initWithFrame
创建的UIView,它显示正常,正是我想要的地方。
为了测试一些触摸交互性,我做了以下事情:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"center: %f",self.center.x);
}
当我按下视图(和其他像这样的视图)时,它们都正确地记录了一个有意义的数字作为视图的超视图坐标空间中的中心点。
但是,当我在initWithFrame
方法中执行相同的日志语句时,self.center.x
不会在视图的superview空间中报告坐标。相反,它会报告作为边界中心的点,即如果视图宽度为100px,则报告所有视图的50
。
我不明白的是,这些视图没有移动,并且框架在initWithFrame
的开头清楚地设置,因为它传递了一个框架CGRect
并且视图显示在正确的位置。那么为什么它只在那种方法中正确地报告它的中心呢?
答案 0 :(得分:1)
在-initWithFrame:
期间,您的视图尚未添加到超级视图中。
(稍后其他一些代码会将其添加到超级视图中 - 作为nib加载代码的一部分,或者手动添加。)