2015-09-28 99 views
0

我有一个从Xcode 6创建的项目。在根视图控制器中,viewDidAppear经历了这个奇怪的延迟。在下面的代码中,如果从viewDidLoadviewWillAppear调用,更改的按钮和背景颜色的创建将立即生效。但如果从viewDidAppear拨打电话,将会有延迟。viewDidAfter UI UI深不可测延迟

如果从viewDidLoadviewWillAppear创建按钮,则该响应不是立即的。

viewDidAppear中的加法运算是立即生效的。

当前和主线程1.

AppDelegate,没有什么didFinishLaunchingWithOptions

在视图控制器的init中没有任何加载。

有什么建议吗?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor redColor]; 
    [self createButton]; 
    NSLog(@"%s currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]); 
} 
-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.view.backgroundColor = [UIColor cyanColor]; 
// [self createButton]; 
    NSLog(@"%s currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]); 
} 
- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    NSLog(@"%s currentthread:%@ mainthread:%@", __PRETTY_FUNCTION__,[NSThread currentThread], [NSThread mainThread]); 
    self.view.backgroundColor = [UIColor blueColor]; 
    int i = 2; 
    int j = 4; 
    int m = i + j; 
    NSLog(@"%s i:%u j:%u m: %u", __PRETTY_FUNCTION__, i,j, m); 

// [self createButton]; 
} 
-(void)createButton 
{ 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setTitle:@"button" forState:UIControlStateNormal]; 
    [button addTarget: self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
    button.frame = CGRectMake(50, 50, 100, 40); 
    [self.view addSubview:button]; 
} 
-(void)buttonPressed:(id)sender 
{ 
    NSLog(@"%s", __PRETTY_FUNCTION__); 
} 

回答

0

viewDidAppear:在视图出现后调用,所以如果你正在做一些改变视图覆盖的东西,它会被察觉。如果您不想看到颜色变化,请在其他早期生命周期方法之一中设置颜色。

0

我发现Google的admob库创建了这个问题。我正在使用版本6.4.x.请注意,正如我在我的问题所述,没有任何加载AppDelegate或视图控制器。在那个阶段还没有一个admob课程正在使用。

此问题只出现在iOS 9中。