我有以下代码:
- (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框架的原点与我正在使用的框架不同,值得注意的是,该值恰好是大小变量的一半(加上 - 符号)。任何帮助是极大的赞赏 !
答案 0 :(得分:2)
首先(并且与问题无关,只是样式问题)使用NSStringFromCGRect而不是自己打印出来。
NSLog(@"frame = %@", NSStringFromCGRect(frame));
....
if(...) {
NSLog(@"self.frame = %@", NSStringFromCGRect(self.frame));
}
您的超类是什么视图?它是一个通用的UIView还是你的一个?在......之前你的initWithFrame:
方法中没有任何内容吗?
宽度和高度的一半成为新起源的重要性在于您的视图已将center
移至0,0。不知道为什么会这样做,因此关于你的超类的问题。
有关详细信息,请参阅文档here并查看center
属性的文档。