繁体   English   中英

UIView设置框架古怪

[英]UIView set frame weirdness

我有以下代码:

    - (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框架的原点与使用的框架不同,值得注意的是,该值恰好是尺寸变量的一半(加上 - 符号)。 任何帮助是极大的赞赏 !

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM