在我的视图控制器中,我的视图在loadView方法中初始化:
- (void)loadView
{
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self loadViewController];
[self.view setBackgroundColor:[UIColor whiteColor]];
}
loadViewController方法创建一个按钮并将其添加到视图中。这是loadViewController方法的一个片段,用于初始化和定位按钮:
graphicalButton = [UIButton buttonWithType:UIButtonTypeCustom];
graphicalButton.exclusiveTouch = YES;
[graphicalButton setImage:kGraphicalIconSelected
forState:UIControlStateSelected];
[graphicalButton setImage:kGraphicalIconDeSelected
forState:UIControlStateNormal];
[graphicalButton setFrame:CGRectMake(230, 100, 37, 34)];
[graphicalButton addTarget:self
action:@selector(graphicalOptionAction:)
forControlEvents:UIControlEventTouchUpInside];
[graphicalButton setUserInteractionEnabled:NO];
NSLog(@"graphical button x %f",graphicalButton.frame.origin.x);
[self.view addSubview:graphicalButton];
这会在iPhone 4s模拟器上正确显示按钮。 log语句也正确记录原点。
但是,在iPhone 6模拟器上,日志语句始终将origin.x
记录为0.如果代码运行,则不会显示该按钮。但是,如果我在此代码段的开头设置了一个断点,然后单步执行每一行,它会正确记录origin.x
并且即使在iPhone 6模拟器上也会显示该按钮。
我甚至尝试在loadViewController
方法中添加对viewWillAppear
的调用,但即使这个按钮也出现同样的问题。关于为什么会发生这种情况以及如何解决这个问题的任何想法?