在我的视图控制器中,我的视图在 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 模拟器上正确显示按钮。日志语句也正确记录了来源。
但是,在 iPhone 6 模拟器上,日志语句始终将 0 记录origin.x
为 0。如果代码运行,则不会显示该按钮。但是,如果我在此代码片段的开头设置了一个断点,然后单步执行每一行,它会origin.x
正确记录并且即使在 iPhone 6 模拟器上也会显示该按钮。
我什至尝试添加对loadViewController
inviewWillAppear
方法的调用,但即使这个按钮也会出现同样的问题。关于为什么会发生这种情况以及如何解决这个问题的任何想法?