如果是iPhone 5(4英寸显示屏),我正在尝试将uiLabel下拉。但是当代码在viewDidLoad中时,它不起作用。如果我通过单击uiButton调用代码,它将起作用。代码:
-(void) viewDidLoad {
if(CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136))) {
CGRect frame = [self.timeOnCurrentQuestion frame];
frame.origin.y += 40; // change the location
[self.timeOnCurrentQuestion setFrame:frame];
nslog(@"This DOES get logged");
}
}
Jonah,您是否在viewWillAppear方法中尝试过代码?可能,它将解决您的问题。
也许这是您需要提防的。
- (void)viewDidLoad
这是控制器juz创建其视图时的一种方法。
例如:也许在您的init方法中,您调用类似:
[self.view setBackground:[UIColor redColor]]; self.timeOnCurrentQuestion = [[UIView alloc] initWithFrame:kFrame];
在这种情况下,工作流程将如下所示:
[self.view setBackground:[UIColor redColor]]; [self viewDidload]; self.timeOnCurrentQuestion = [[UIView alloc] initWithFrame:kFrame];
此工作流程的原因是因为调用了self.view,所以在正常视图循环之前需要其视图,因此,在这种情况下,self.timeOnCurrentQuestion在viewDidload方法中仍然为nil。
我不知道我的练习是否最好。
我总是使用控制器的init方法初始化subView。并在[self viewDidload]中执行[self.view addSubview:_subview](//或需要self.view的所有方法调用);
viewDidAppear为我工作。生命周期似乎是