2013-03-08 15 views
3

我不知道這是否是一個錯誤或我做錯了什麼:視野中消失,當我設置`translatesAutoresizingMaskIntoConstraints`到`NO`

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UIWindow *window = [self window]; 

    UIViewController *main = [[UIViewController alloc] init]; 
    UIViewController *vc1 = [[UIViewController alloc] init]; 
    UIViewController *vc2 = [[UIViewController alloc] init]; 

    [main addChildViewController:vc1]; 
    [main addChildViewController:vc2]; 

    UIView *mainView = [main view]; 
    UIView *v1 = [vc1 view]; 
    UIView *v2 = [vc2 view]; 

    [v1 setBackgroundColor:[UIColor redColor]]; 
    [v2 setBackgroundColor:[UIColor blueColor]]; 
    [v1 setTranslatesAutoresizingMaskIntoConstraints:NO]; 
    [v2 setTranslatesAutoresizingMaskIntoConstraints:NO]; 
    [v1 setClipsToBounds:YES]; 
    [v2 setClipsToBounds:YES]; 

    [mainView setBackgroundColor:[UIColor yellowColor]]; 
    [mainView addSubview:v1]; 
    [mainView addSubview:v2]; 

    NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:v1 
     attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
     toItem:mainView attribute:NSLayoutAttributeTop multiplier:1.0 
     constant:0.0]; 
    [mainView addConstraint:constraint]; 

    constraint = [NSLayoutConstraint constraintWithItem:v1 
     attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual 
     toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 
     constant:240.0]; 
    [mainView addConstraint:constraint]; 

    constraint = [NSLayoutConstraint constraintWithItem:v2 
     attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
     toItem:v1 attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]; 
    [mainView addConstraint:constraint]; 

    [window setRootViewController:main]; 
    [window setBackgroundColor:[UIColor greenColor]]; 
    [window makeKeyAndVisible]; 

    [main release]; 
    [vc1 release]; 
    [vc2 release]; 

    return YES; 
} 

v1v2當我啓動應用程序出現無處。

如果我註釋掉:

[v1 setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[v2 setTranslatesAutoresizingMaskIntoConstraints:NO]; 

可可將無法滿足,因爲被翻譯成約束自動尺寸面膜我的約束。

回答

3

您沒有任何水平約束,缺少v2的高度約束。使用你需要像|-[v1]-||-[v2]-|V:[v2]-|

NSArray *constraints; 

constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[v1]-|" options:0 metrics:nil views:@{@"v1": v1}]; 
[mainView addConstraints:constraints]; 
+0

哇視覺格式的語言,即做到了。我的想法是我錯過了某種約束,我也爲'v2'添加了一個高度約束,但那不起作用,所以我只是放棄了。謝謝! – Espresso 2013-03-09 01:56:17

相關問題