UIView设置框架古怪

时间:2011-06-17 13:32:47

标签: iphone ipad uikit

我有以下代码:

    - (id)initWithFrame:(CGRect)frame  chapterNum:(int)newChapterNumber pageNum:(int)newPageNumber
    {
NSLog (@"Frame:x:%f y:%f width:%f height:%f",frame.origin.x,
                                             frame.origin.y,
                                             frame.size.width,
                                             frame.size.height);
self = [super initWithFrame:frame];
if (self) {
    NSLog (@"View Frame:x:%f y:%f width:%f height:%f",self.frame.origin.x,
           self.frame.origin.y,
           self.frame.size.width,
           self.frame.size.height);
    ......
    }

我在模拟器上运行(在横向模式下),当我查看控制台日志的结果时,我看到:

2011-06-17 09:17:16.428 MyApp [16454:207]框架:x:0.000000 y:0.000000宽度:128.000000高度:96.000000

2011-06-17 09:17:16.433 MyApp [16454:207]查看框架:x:-64.000000 y:-48.000000宽度:128.000000高度:96.000000

为什么View框架的原点与我正在使用的框架不同,值得注意的是,该值恰好是大小变量的一半(加上 - 符号)。任何帮助是极大的赞赏 !

1 个答案:

答案 0 :(得分:2)

首先(并且与问题无关,只是样式问题)使用NSStringFromCGRect而不是自己打印出来。

NSLog(@"frame = %@", NSStringFromCGRect(frame));
....
if(...) {
    NSLog(@"self.frame = %@", NSStringFromCGRect(self.frame));
}

您的超类是什么视图?它是一个通用的UIView还是你的一个?在......之前你的initWithFrame:方法中没有任何内容吗?

宽度和高度的一半成为新起源的重要性在于您的视图已将center移至0,0。不知道为什么会这样做,因此关于你的超类的问题。

有关详细信息,请参阅文档here并查看center属性的文档。