我试图将uiLabel向下移动,如果它是iphone 5(4“显示器)。但是当代码在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");
}
}
有什么建议吗?
答案 0 :(得分:0)
也许这是你需要注意的事情。
- (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,然后在正常视图循环之前需要它的视图,因此,在这种情况下,view.Danload方法中的self.timeOnCurrentQuestion仍为零。
我不知道我的练习是否是最好的。
我总是在控制器的init方法中初始化subView。 并在[self viewDidload]中执行[self.view addSubview:_subview](//或需要self.view的所有方法调用);
答案 1 :(得分:0)
Jonah,您是否在viewWillAppear方法中尝试过代码?可能,它会解决你的问题。
答案 2 :(得分:0)
viewDidAppear为我工作。生命周期似乎是