[英]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.