0

我有一个创建的 UIView,initWithFrame它显示得很好,正是我想要的。

为了测试一些触摸交互性,我做了以下事情:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"center: %f",self.center.x);
 }

当我按下视图(以及类似这个视图的其他视图)时,它们都正确地记录了一个有意义的数字,作为它们在视图超级视图的坐标空间中的中心点。

但是,当我在initWithFrame方法内执行相同的日志语句时,self.center.x不会报告视图超级视图空间中的坐标。相反,它报告将成为边界中心的点,即如果视图是 100 像素宽,它会报告50所有视图的 ,。

我不明白的是这些视图没有移动,并且框架在开始时明确设置,initWithFrame因为它通过了一个框架CGRect并且视图显示在正确的位置。那么为什么它不能仅以这种方法正确报告其中心呢?

4

1 回答 1

1

在 期间-initWithFrame:,您的视图尚未添加到超级视图。

(稍后其他一些代码会将其添加到超级视图中——作为 nib 加载代码的一部分,或手动添加。)

于 2012-04-20T04:39:29.973 回答